iOS 原生解析Json类NSJsonSerialization

转载 2013年11月13日 10:34:57

关于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 or NSDictionary.

  • All objects are instances of NSStringNSNumberNSArrayNSDictionary, or NSNull.

  • All dictionary keys are instances of NSString.

  • Numbers are not NaN or infinity.

我们能利用NSJSONSerialization将JSON转换成Foundation对象,也能将Foundation对象转换成JSON,转换成JSON的对象必须具有如下属性:

  • 顶层对象必须是NSArray或者NSDictionary
  • 所有的对象必须是NSString、NSNumber、NSArray、NSDictionary、NSNull的实例
  • 所有NSDictionary的key必须是NSString类型
  • 数字对象不能是非数值或无穷

接下来看看如何使用,首先是如何生成JSON格式的数据:
我这里选用项目中的代码片段来进行简要介绍,以下显示了登陆请求JSON格式数据的生成
  1. NSDictionary *registerDic = [NSDictionary dictionaryWithObjectsAndKeys:uuid,@"_id",userName,@"login_name",password,@"password", nil];  
  2.     if ([NSJSONSerialization isValidJSONObject:registerDic]) {  
  3.         NSError *error;  
  4.         NSData *registerData = [NSJSONSerialization dataWithJSONObject:registerDic options:NSJSONWritingPrettyPrinted error:&error];  
  5.         NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:registerData encoding:NSUTF8StringEncoding]);  
  6.     }  

NSDictionary中的key就是json字符串中的key,object就是json字符串中的value,isValidJSONObject:方法是检测Foundation对象能否合法转换为JSON对象,dataWithJSONObject:options:error方法是将Foundation对象转换为JSON对象,参数NSJSONWritingPrettyPrinted的意思是将生成的json数据格式化输出,这样可读性高,不设置则输出的json字符串就是一整行。

解析服务端返回的json格式数据:
  1. NSDictionary *resultJSON = [NSJSONSerialization JSONObjectWithData:resultData options:kNilOptions error:&error];  

获取返回字符串中key为status的value:
  1. NSString *status = [resultJSON objectForKey:@"status"];  

以上就简要的介绍了下NSJSONSerilazation的使用,不是很全面,以后有时间再深入详解一下。

iOS开发中的注意点

在项目上 1.去除项目中所有的warning,warning代表程序有不稳定的地方,极有可能产生bug。 2.单个类的代码不要超过500行,单个函数的代码不要超过50行,如果超过了肯定能做抽象。 3....
  • RazerTang
  • RazerTang
  • 2017年12月29日 16:59
  • 61

iOS - 需求 - 将参数进行字典排序组成字符串(待签名字符串)

将所有POST参数(sign除外)进行字典排序,组成字符串: 比如:(根据首字母排序,参数间用&相连,字典转成json格式)ap_id=20140723007148&biz_conte={"outT...
  • kkkenty
  • kkkenty
  • 2015年06月03日 10:47
  • 3139

iOS中JSON解析三方库的比较

网络数据解析框架   1.  JsonModel    一个 JSON 模型转换库,有着比较简洁的接口。Model 需要继承自 JSONModel。 2.  yyModel      yyModel比...
  • u012701023
  • u012701023
  • 2016年03月31日 16:27
  • 4510

IOS中Json解析的四种方法,推荐使用原生解析,和jsonKit

IOS中Json解析的四种方法 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式。 有的json代码格式比较混乱,可以使用此“http://www.bejs...
  • wisdom605768292
  • wisdom605768292
  • 2016年04月12日 10:02
  • 2446

ios中使用 NSJSONSerialization对 json数据的解析

ios5中apple增加了解析JSON的api——NSJSONSerialization。通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化。网上已经有人做过测试,...
  • u011303663
  • u011303663
  • 2015年09月11日 10:33
  • 6226

NSJSONSerialization介绍

ios5中apple增加了解析JSON的api——NSJSONSerialization。网上已经有人做过测试,NSJSONSerialization在效率上完胜SBJSON、TouchJSON、YA...
  • uxyheaven
  • uxyheaven
  • 2012年08月20日 23:52
  • 53429

数据解析(三)解析JSON-----系统自带NSJSONSerialization 与 第三方JSONKit

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - Decembe...
  • humingtao2013
  • humingtao2013
  • 2014年04月18日 20:50
  • 6699

IOS开发专题---转化解析JSON格式为字符格式(原生类库解析)

IOS开发专题---转化解析JSON格式为字符格式(原生类库解析)
  • qingfeng812
  • qingfeng812
  • 2014年11月06日 10:14
  • 896

iOS 原生解析Json类NSJsonSerialization

关于NSJSONSerialization,官方文档中有如下介绍: You use the NSJSONSerialization class to convert JSON to Fo...
  • xujinyang1234
  • xujinyang1234
  • 2013年11月13日 10:34
  • 3158

Swift-->Json解析(原生NSJSONSerialization)

什么是Json? 请百度… 本质就是String,是一种有格式的String.在Swift中,使用NSJSONSerialization对象,进行解析.1:将对象(字典/数组)转换成Json Str...
  • angcyo
  • angcyo
  • 2016年08月26日 10:22
  • 1505
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 原生解析Json类NSJsonSerialization
举报原因:
原因补充:

(最多只允许输入30个字)