NSString+JSON - iOS
日常开发中常用的一个相互转换的方法;
直接创建对应的类,引用如下方法即可实现;
具体 code 如下:
声明:
#import <Foundation/Foundation.h> @interface NSString (JSON) - (id)jsonObject; /** dic -> json*/
- (NSString *)dictionaryToJson:(NSDictionary *)dic; @end
实现:
#import "NSString+JSON.h" extern void dictionaryFilterNullNode(NSMutableDictionary*);
extern void arrayFilterNullNode(NSMutableArray*); void inline dictionaryFilterNullNode(NSMutableDictionary *dic) {
NSMutableArray *deleteKeys = [NSMutableArray array];
[[dic allKeys] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
id value = [dic objectForKey:obj];
if ([value isKindOfClass:[NSNull class]]) {
[deleteKeys addObject:obj];
} else if([value isKindOfClass:[NSMutableArray class]]) {
arrayFilterNullNode(value);
} else if([value isKindOfClass:[NSMutableDictionary class]]) {
dictionaryFilterNullNode(value);
}
}];
[deleteKeys enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[dic removeObjectForKey:obj];
}];
deleteKeys;
} void inline arrayFilterNullNode(NSMutableArray *array) {
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[NSMutableDictionary class]]) {
dictionaryFilterNullNode(obj);
}
}];
} @implementation NSString (JSON)
- (id)jsonObject {
NSError *error = nil;
id result = [NSJSONSerialization JSONObjectWithData:[self dataUsingEncoding:NSUTF8StringEncoding]
options:NSJSONReadingMutableContainers
error:&error]; if (error || [NSJSONSerialization isValidJSONObject:result] == NO)
{
return self;
} if ([result isKindOfClass:[NSMutableArray class]]) {
arrayFilterNullNode(result); } else if([result isKindOfClass:[NSMutableDictionary class]]) {
dictionaryFilterNullNode(result); }else if ([result isKindOfClass:[NSNull class]]){
// result;
NSLog(@"----->%@",result);
return self;
} return result;
} //dic -> json
- (NSString *)dictionaryToJson:(NSDictionary *)dic {
NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic
options:NSJSONWritingPrettyPrinted
error:&error]; return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
} @end
NSDictionary+JSON - iOS 机票如下: NSDictionary+JSON - iOS
以上便是此次分享的内容,希望能对大家有所帮助!
NSString+JSON - iOS的更多相关文章
- NSDictionary+JSON - iOS
日常开发中常用的一个相互转换的方法; 直接创建对应的类,引用如下方法即可实现; 具体 code 如下: 声明: #import <Foundation/Foundation.h> @int ...
- iOS NSDictionary <--> NSString(JSON) in Objc
NSDictionary --> NSString + (NSString*)stringINJSONFormatForObject:(id)obj { NSData *jsonData = [ ...
- NSString json 车NSDictionary
NSData *jsonContent = [[userInfo objectForKey:@"acme"] dataUsingEncoding:NSUTF8StringEncod ...
- 【疯狂造轮子-iOS】JSON转Model系列之二
[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...
- iOS网络-02-数据解析(JSON与XML)
数据交互格式 服务器返回给用户的数据,通常是以下两种方式: JSON XML JSON 一种轻量级的数据数据格式,体积比XML小,是服务器返回给移动端通常采用的格式 用使用JSON文件中的数据,需要对 ...
- iOS学习—JSON数据解析
关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如TouchJson,JSONKit,SBJon等,自从iOS5.0以后,苹果SDK推出了自带的JSON解决方案NSJSONSer ...
- iOS学习——JSON数据解析(十一)
在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...
- iOS学习笔记(十一)——JSON数据解析
在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...
- iOS 解析json串
NSString *json = @"[{\"name\":\"a1\",\"items\":[{\"x1\" ...
随机推荐
- 前端参数统一校验工具类ValidParamUtils
1,前端参数不可信,对于后端开发人员来说应该是一条铁律,所以对于前端参数的校验,必不可少,而统一的前端参数校验工具,对我们进行参数校验起到事半功倍的效果 2,统一参数校验工具ValidParamUti ...
- Linux的find命令实例详解和mtime ctime atime
这次解释一下三个Linux文件显示的三个时间,然后展示一下find命令的各个功能 在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime mo ...
- Cocos2d-js 开发记录:图片数据资源等的异步加载
这里说的是在需要的使用加载图片,比如游戏中的某个关卡的图片,不用在游戏一开始就加载(万一用户玩不到那关,岂不是很冤,流量费了那么多),否则载入速度也慢.这种方式加载资源要用到cc.loader官方文档 ...
- HTML表单(form)的“enctype”属性
Form元素的语法中,EncType表明提交数据的格式 属性值: application/x-www-form-urlencoded:在发送前编码所有字符(默认) multipart/form-dat ...
- STROME --realtime & online parallel computing
Data Collections ---> Stream to Channel (as source input) ----> Parallel Computing---> Resu ...
- 01_JMS概述
[以前的通信技术的局限性] 在大规模和复杂的分布式系统中,传统的RMI.DCOM等中间件通信技术逐渐有了局限性,如下: 1.同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果才能继续执行. ...
- AngularJs整合ui-bootstrap以及ui-grid
1. ui-bootstrap 参考博客: http://www.cnblogs.com/pilixiami/p/5597634.html (这篇博客写的非常不错,值得推荐) angular-ui ...
- 去掉iframe白色背景方法
在iframe内添加如下代码 style="display:none" onload="this.style.display = 'block';" 先让它不显 ...
- C# 任务并行库使用小计 z
1.简单创建使用 using System; using System.Diagnostics; using System.Threading; using System.Threading.Task ...
- OpenGL中的数据——Buffer
OpenGL中主要包括了两种数据——Buffer和Texture. Buffer用于储存线性数无类型据块,可以看成普通的内存块,而Texture则用于储存多维数据,一般储存图像或者其他数据. Buff ...