iOS JSON解析之NSJSONSerialization

1、概念

JSON是一种轻量级的数据格式,用于数据交互服务器返回给客户端的数据。NSJSONSerialization是苹果原生的json解析方式,使用这个类可以将JSON转化为Foundation对象,也可将Foundatio对象转化为JSON。

2、使用NSJSONSerialization进行JSON解析的前提

An object that may be converted to JSON must have the following properties:

(1)顶层对象必须是NSArray或NSDictionary

  (2) 所有对象必须是NSString,NSNumber,NSArray,NSDictionary or NULL

  (3)所有字典的键值都是字符串类型的

(4)数值不能是非数值或无穷大

3、NSJSONReadingOptions参数的含义

typedef enum NSJSONReadingOptions : NSUInteger {

NSJSONReadingMutableContainers = (1UL << 0),//被创建的数字或字典是可变的

NSJSONReadingMutableLeaves = (1UL << 1),//Json对象中创建的字符串是NSMutableString

NSJSONReadingAllowFragments = (1UL << 2)//允许顶层对象不是NSArrayh

} NSJSONReadingOptions;

4、JSON 转化为 Foundation Object

-(NSDictionary *)objectConvertByJsonStr:(NSString *)jsonStr

{

NSData *data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];

NSError *error;

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

if (error) {

NSLog(@"error:%@",error);

}

return dict;

}

5、Foundation object 转化为 Json

-(NSString *)jsonStrConvertByObject:(NSDictionary *)dict

{

//whether a given object can be converted to JSON data.

if ([NSJSONSerialization isValidJSONObject:dict]) {

NSError *error;

NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];

NSString *resultStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

return resultStr;

}else{

return nil;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、iOS 4种JSON数据解析方法详解 2013年09月10日⁄ 综合⁄ 共 9124字⁄ 字号小中大⁄评论关闭...
    lilinjianshu阅读 2,100评论 0 2
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 1,454评论 0 6
  • JSON JSON和XML都是需要解析的 JSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据...
    JonesCxy阅读 1,885评论 2 10
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,726评论 2 7
  • 1.服务器返回的数据: 对于服务器返回来的data,一般有两种格式:JSON/XMLJSON:是民间的;XML:是...
    SoftKnife阅读 563评论 0 5