IOS学习笔记38——NSJSONSerialization使用
来源:互联网 发布:网络交换机柜 编辑:程序博客网 时间:2024/05/23 11:44
在之前的学习笔记《IOS学习笔记33—XML解析之KissXML的使用》中介绍了如何解析XML格式的数据,今天简要介绍下如何解析JSON格式的数据,JSON数据结构以其轻量化的结构体和良好的可读性被越来越广泛的运用,特别在移动开发上,手机的流量是宝贵资源,更要求使用轻量级的数据格式进行数据传输。关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如SBJson、JSONFramwork等,用的也非常广泛,自从iOS5.0以后,苹果推出了SDK自带的JSON解决方案NSJSONSerialization,这是一个非常好用的JSON生成和解析工具,效率也是比其他第三方开源项目的高很多,详情可查看Developer Guider。
关于NSJSONSerialization,官方文档中有如下介绍:
You use the NSJSONSerialization
class to convert JSON to Foundation objects and convert Foundation objects to JSON.
An object that may be converted to JSON must have the following properties:
The top level object is an
NSArray
orNSDictionary
.All objects are instances of
NSString
,NSNumber
,NSArray
,NSDictionary
, orNSNull
.All dictionary keys are instances of
NSString
.Numbers are not NaN or infinity.
- 顶层对象必须是NSArray或者NSDictionary
- 所有的对象必须是NSString、NSNumber、NSArray、NSDictionary、NSNull的实例
- 所有NSDictionary的key必须是NSString类型
- 数字对象不能是非数值或无穷
接下来看看如何使用,首先是如何生成JSON格式的数据:
我这里选用项目中的代码片段来进行简要介绍,以下显示了登陆请求JSON格式数据的生成
- NSDictionary *registerDic = [NSDictionary dictionaryWithObjectsAndKeys:uuid,@"_id",userName,@"login_name",password,@"password", nil];
- if ([NSJSONSerialization isValidJSONObject:registerDic]) {
- NSError *error;
- NSData *registerData = [NSJSONSerialization dataWithJSONObject:registerDic options:NSJSONWritingPrettyPrinted error:&error];
- NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:registerData encoding:NSUTF8StringEncoding]);
- }
NSDictionary *registerDic = [NSDictionary dictionaryWithObjectsAndKeys:uuid,@"_id",userName,@"login_name",password,@"password", nil]; if ([NSJSONSerialization isValidJSONObject:registerDic]) { NSError *error; NSData *registerData = [NSJSONSerialization dataWithJSONObject:registerDic options:NSJSONWritingPrettyPrinted error:&error]; NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:registerData encoding:NSUTF8StringEncoding]); }
NSDictionary中的key就是json字符串中的key,object就是json字符串中的value,isValidJSONObject:方法是检测Foundation对象能否合法转换为JSON对象,dataWithJSONObject:options:error方法是将Foundation对象转换为JSON对象,参数NSJSONWritingPrettyPrinted的意思是将生成的json数据格式化输出,这样可读性高,不设置则输出的json字符串就是一整行。
解析服务端返回的json格式数据:
- NSDictionary *resultJSON = [NSJSONSerialization JSONObjectWithData:resultData options:kNilOptions error:&error];
NSDictionary *resultJSON = [NSJSONSerialization JSONObjectWithData:resultData options:kNilOptions error:&error];
获取返回字符串中key为status的value:
- NSString *status = [resultJSON objectForKey:@"status"];
NSString *status = [resultJSON objectForKey:@"status"];
以上就简要的介绍了下NSJSONSerilazation的使用,不是很全面,以后有时间再深入详解一下。
- IOS学习笔记38——NSJSONSerialization使用
- IOS学习笔记38——NSJSONSerialization使用
- IOS学习笔记38——NSJSONSerialization使用
- iOS网络开发——JSON数据解码(使用NSJSONSerialization)
- [ios] NSJSONSerialization使用 【转】
- iOS NSJSONSerialization使用
- IOS学习之解析数据(NSJSONSerialization)
- ios-使用NSJSONSerialization解析JSON文件
- iOS 使用NSJSONSerialization类进行json解析
- NSJSONSerialization使用
- NSJSONSerialization使用
- iOS --- 使用NSJSONSerialization来解析JSON格式的数据
- ios中使用 NSJSONSerialization对 json数据的解析
- iOS开发1-使用NSJSONSerialization解析JSON数据
- IOS JSON解析 NSJSONSerialization
- NSJSONSerialization使用——json格式字符串与dict字典的相互转换
- NSJSONSerialization的使用
- NSJSONSerialization类的使用
- Java栈与堆
- jQuery.extend函数详细用法!
- 从程序员到项目经理(5):程序员加油站,不是人人都懂的学习要点
- The furthest distance in the world
- Oracle存储过程
- IOS学习笔记38——NSJSONSerialization使用
- 截取一句话中的单词(C语言)
- 常见etl面试题目
- IOS学习笔记32—使用Storyboard实现复杂界面
- zoj 3492 Kagome Kagome
- PHP http 协议
- PKU_1003_Hangover
- Android的按钮单击事件及监听器的5种实现方式
- MySQL事务隔离级别详解