iOS 使用NSJSONSerialization类进行json解析

 
JSON数据结构基本概念
JavaScript Object Notation ,轻量级的数据交换格式,采用完全独立于语言的文本格式,被称为理想的数据交换语言,易于人阅读和便携,同时也易于及其解析何程,由于JSON解析便捷、快速,并且相同数据用JSON编辑所占的内存更小,所以在iOS中我们我们使用JSON解析更加普遍。
 
JSON文档有两种结构:对象 、数据
对象:以“{“开始,以”}”结束,是“名称/值”对儿的集合。名称和值中间用“:”隔开。多个“名称/值”对之间用“,”隔开。类似OC中的字典。
数组:以“["开始,以“]”结束,中间是数据。数据以“,”分割。
JSON中的数据类型:字符串、数值、BOOL、对象、数组。
 例如:


JSON – OC 转换对照表

 JSON数据结构的功能
1、数据交换
2、内容管理
3、配置文件
 
JSON解析方案
 
在iOS中,JSON的常见解析方案有4种
第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,越差) 
苹果原生(自带):NSJSONSerialization(性能最好)

 

 

NSJSONReadingOptions数组中含三种参数:

NSJSONReadingMutableContainers //是说被创建的数组或者字典应该是可变的

 

NSJSONReadingMutableLeaves

  //是说JSON对象中的被创建的字符串是NSMutableString类型的

NSJSONReadingAllowFragments  //这一句是说解析出的顶层对象可以允许不是NSArray或NSDictionary类型的

NSJSONWritingOptions 包含一种参数:

NSJSONWritingPrettyPrinted   //意思是将生成的json数据格式化输出,这样可读性高,不设置则输出的json字符串就是一整行。

 

下面是NSJSONSerialization解析过程:

 

 

 

 

其他:

利用字典NSDictionary转换为键/值格式的数据。

 

 

// 如果数组或者字典中存储了  NSString, NSNumber, NSArray, NSDictionary, or NSNull 之外的其他对象,就不能直接保存成文件了.也不能序列化成 JSON 数据.
    NSDictionary *dict = @{@"name" : @"me", @"do" : @"something", @"with" : @"her", @"address" : @"home"};
    
    // 1.判断当前对象是否能够转换成JSON数据.
    // YES if obj can be converted to JSON data, otherwise NO
    BOOL isYes = [NSJSONSerialization isValidJSONObject:dict];
    
    if (isYes) {
        NSLog(@"可以转换");
        
        /* JSON data for obj, or nil if an internal error occurs. The resulting data is a encoded in UTF-8.
         */
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];
        
        /*
         Writes the bytes in the receiver to the file specified by a given path.
         YES if the operation succeeds, otherwise NO
         */
        // 将JSON数据写成文件
        // 文件添加后缀名: 告诉别人当前文件的类型.
        // 注意: AFN是通过文件类型来确定数据类型的!如果不添加类型,有可能识别不了! 自己最好添加文件类型.
        [jsonData writeToFile:@"/Users/SunnyBoy/Sites/JSON_XML/dict.json" atomically:YES];
        
        NSLog(@"%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
        
    } else {
        
        NSLog(@"JSON数据生成失败,请检查数据格式");
        
    }

demo地址:  iOS xml解析和json解析demo

 

 

-- NORMAL --

-- NORMAL --
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值