zoukankan      html  css  js  c++  java
  • iOS 系统自带JSON解析,NSJSONReadingOptions参数解读

    开发中,我们经常需要解析JSON数据,系统提供的

    [NSJSONSerialization JSONObjectWithData:[objc dataUsingEncoding:NSUTF8StringEncoding]

                                                        options:(NSJSONReadingAllowFragments) error:&error]
    解析方法,需要填写一个NSJSONReadingOptions参数

    首先用代码来说明NSJSONReadingMutableContainers的作用: 

    1.     NSString *str = @"{"name":"Alice"}";
    2.     
    3.     NSMutableDictionary *dict = [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
    4.     // 程序崩溃,不选用NSJSONReadingOptions,则返回的对象是不可变的,NSDictionary
    5.     [dict setObject:@"male" forKey:@"sex"];
    6.     
    7.     NSMutableDictionary *dict = [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
    8.     // 没问题,使用NSJSONReadingMutableContainers,则返回的对象是可变的,NSMutableDictionary
    9.     [dict setObject:@"male" forKey:@"sex"];
    10.     
    11.     NSLog(@"%@", dict);



     
    NSJSONReadingMutableContainers:返回可变容器类,NSMutableDictionary或NSMutableArray。 
    NSJSONReadingMutableLeaves:返回的JSON对象中字符串的值为NSMutableString,目前在iOS 7上测试不好用,应该是个bug,参见: 
    http://stackoverflow.com/questions/19345864/nsjsonreadingmutableleaves-option-is-not-working 
     
    NSJSONReadingAllowFragments:允许JSON字符串最外层既不是NSArray也不是NSDictionary,但必须是有效的JSON Fragment。例如使用这个选项可以解析 @“111” 这样的字符串。参见: 
    http://stackoverflow.com/questions/16961025/nsjsonserialization-nsjsonreadingallowfragments-reading
     

  • 相关阅读:
    nyoj 17 单调递增最长子序列
    nyoj 18 The Triangle
    nyoj 712 探 寻 宝 藏
    nyoj 61传纸条(一)
    nyoj 269 VF
    nyoj 44 子串和
    nyoj 252 01串
    nyoj 42 一笔画问题
    nyoj 756 重建二叉树
    Table 样式设置
  • 原文地址:https://www.cnblogs.com/aaalice/p/4326514.html
Copyright © 2011-2022 走看看