JSON解析之NSJSONReadingOptions说明

来源:互联网 发布:控油祛痘的洗面奶知乎 编辑:程序博客网 时间:2024/05/17 07:56
在使用苹果自带的JSON解析时,我们往往搞不清楚该传哪一个参数,下面我一一介绍一下这些参数的含义// 1、直接填0                         返回的对象是不可变的,NSDictionary或NSArray// 2、NSJSONReadingMutableLeaves      返回的JSON对象中字符串的值类型为NSMutableString// 3、NSJSONReadingMutableContainers  返回可变容器,NSMutableDictionary或NSMutableArray,返回的是数组字典嵌套的情况,每一层都是可变的// 4、NSJSONReadingAllowFragments     允许JSON字符串最外层既不是NSArray也不是NSDictionary,但必须是有效的JSON Fragment// 假设服务器返回的数据最外层是字典,可以直接填0,也可以设置为 NSJSONReadingAllowFragmentsNSDictionary *responseDic = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&error];// 如果是数组,直接改变接收对象的类型为数组NSArray *responseArr = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&error];
// 有时返回的数据可变,直接改变接收对象的类型行不行呢NSMutableDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:nil];// 答案是不行的,应用会崩溃,因为dict的类型由“=”后面的部分决定,依然是不可变字典,不存在【setObject: forKey:】方法[dict setObject:@"Jack" forKey:@"name"];// 解决办法NSMutableDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];// 使用NSJSONReadingMutableContainers,则返回的对象是可变的NSMutableDictionary[dict setObject:@"Jack" forKey:@"name"];

0 0
原创粉丝点击