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\" ...
随机推荐
- markdown语法简单总结
最常用的十个MarkDown语法总结: 标题:只要在这段文字前加 # 号即可 # 一级标题 最大 ## 二级标题 ### 三级标题 无序列表:在文字前加上 - 或 * 有序列表:在文字前加1. 2. ...
- oracle UDT 有关数据字典的研究
1.数据及类型准备 创建了一个自定义类型 create or replace type addr_type as object( street varchar2(30); city varchar2( ...
- 阿里云 linux 系统的架构
简单说,/lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的. /lib/ — 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件.目录 /usr/lib ...
- html的标签(1)
首先补充上一次没有讲到的,html文件后缀名有2种,一种是.htm,一种是.html..html是老的教科书里面的文件后缀名,.html是新的教科书的文件后缀名..htm文件是不完整的支持html5的 ...
- Eclipse Startup
First of all, we take a look at class EclipseStarter /********************************************** ...
- requireJS基本配置相关
requireJS: (1)实现js文件的异步加载,避免页面失去响应: (2)管理模块之间的依赖性,便于代码的编写和维护. 加载: <script src="js/require.js ...
- Oracle自定义行转列函数
--行转列自定义函数,只针对TABLE1表 --paramType是参数类型,用于判断,param1和param2是条件参数 create or replace function My_concat( ...
- linux下使用第三方商店安装应用
安装 snap store 进行下载,相当与第三方应用商店,但是往往比某一个官方软件源里面的应用要丰富或更实用 到 snap docs 中选择你的 linux 版本进入安装文档,根据指示一步一步安装即 ...
- day012-Lambda、方法引用
1. 函数式接口 有且只有一个抽象方法的接口就是函数式接口. 函数式接口的定义格式: Interface 接口名{ 抽象方法: } @Override:用来修饰方法声明,告诉编译器该方法是重写父类的方 ...
- pb getchild获取DropDownDW子窗体后进行取值
datawindowchild ldwc if dw_1.getchild("dwmc", ldwc) = 1 then long ll_f ll_f = ldwc.find( ...