您的位置:1010cc时时彩经典版 > 操作系统 > 【1010cc时时彩经典版】IOS中Json解析的四种方法,

【1010cc时时彩经典版】IOS中Json解析的四种方法,

发布时间:2019-08-13 11:34编辑:操作系统浏览(140)

    IOS开采之JSON格式数据的成形与剖析,ios开辟json格式

     本文将从多个方面临IOS开辟中JSON格式数据的改造与深入分析进行教学:


     

    一、JSON是什么?
    二、我们为什么要用JSON格式的数据?
    三、如何生成JSON格式的数据?
    四、如何解析JSON格式的数据?
    

       JSON格式取代了xml给网络传输带来了非常大的有益,但是却尚未了xml的洞察,尤其是json数据不短的时候,大家会陷入繁琐复杂的多少节点查找中。那时大家就供给一款在线校验工具 BeJson。 


     

     本文将从多少个地点对IOS开拓中JSON格式数据的变通与深入分析实行解说:

    前言

        NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject
        @available(iOS 5.0, *)         public class NSJSONSerialization : NSObject
    

    开采自身有过多文书档案,所未来后整理一下,防止忘了。。。

    用作一种轻量级的数据交流格式,json正在逐年替代xml,成为网络数据的通用格式。

    一、JSON是什么?

      JSON(JavaScript Object Notation) 是一种轻量级的数据交流格式。它基于ECMAScript的叁个子集。 JSON接纳完全部独用立于言语的文本格式,可是也应用了近乎于C语言家族的习于旧贯(包蕴C、C 、C#、Java、JavaScript、Perl、Python等)。那么些特点使JSON成为能够的数据沟通语言。 易于人读书和编排,同偶然候也易于机器分析和扭转(一般用于提高互连网传输速率)。

    JSON数据重要有三种数据结构,一种是键/值,另一种是数组的款式来代表。


    1、JSON 数据

    • JSON(JavaScript Object Notation)是一种轻量级的数据调换格式。它根据ECMAScript 的贰个子集。JSON 选取完全部独用立于言语的文本格式,不过也运用了类似于 C 语言家族的习贯(包含 C、C 、 C#、Java、JavaScript、Perl、Python 等)。那几个特点使 JSON 成为能够的数据调换语言。易于人阅读和编排,同不经常候也易于机器剖判和变化(一般用于晋级网络传输速率)。

    作为一种轻量级的数据交换格式,json正在日渐替代xml,成为网络数据的通用格式。

    部分json代码格式比较散乱,能够行使此“

    1、JSON 数据的书写格式是:名称/值对。如:

    {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}
    

     

     

    1.1 JSON 语准则则

    • JSON 语法是 JavaScript 对象表示语法的子集。
      • 数据在键值对中
      • 数量由逗号分隔
      • 花括号保存对象
      • 方括号保存数组

    一部分json代码格式比较混乱,可以采用此“

    从IOS5初始,APPLE提供了对json的原生辅助(NSJSON塞里alization),不过为了合作在此之前的ios版本,能够行使第三方库来分析Json。

    2、JSON 数据的书写格式是:数组格式,当需求代表一组值时,JSON 不但能够增长可读性,何况可以减掉复杂性。如:

    {
        "programmers": [{
            "firstName": "Brett",
            "lastName": "McLaughlin",
            "email": "aaaa"
        }, {
            "firstName": "Elliotte",
            "lastName": "Harold",
            "email": "cccc"
        }],
        "authors": [{
            "firstName": "Isaac",
            "lastName": "Asimov",
            "genre": "sciencefiction"
        }, {
            "firstName": "Frank",
            "lastName": "Peretti",
            "genre": "christianfiction"
        }],
        "musicians": [{
            "firstName": "Eric",
            "lastName": "Clapton",
            "instrument": "guitar"
        }, {
            "firstName": "Sergei",
            "lastName": "Rachmaninoff",
            "instrument": "piano"
        }]
    }
    

     

     

     


    一、JSON是什么?

    二、我们为什么要用JSON格式的数量?

    三、怎样生成JSON格式的数额?

    四、怎么着分析JSON格式的多寡?

    1.2 JSON 基础结构

    • JSON 结构有二种,JSON 简单说正是 javascript 中的对象和数组,所以那二种结构正是指标和数组二种结构,通过那三种结构能够代表各个繁复的构造。

      • 1、对象:对象在 JSON 中意味为 “{}” 括起来的内容,数据结构为 {key:value, key:value, ...} 的键值对的构造,在面向对象的言语中,key 为目的的品质,value 为相应的属性值,所以很轻便通晓,取值方法为 对象[key] 获取属性值,那几个属性值的等级次序能够是数字、字符串、数组、对象两种。
      • 2、数组:数组在 JSON 中代表为 “[]” 括起来的原委,数据结构为 ["java", "javascript", "vb", ...],取值格局和兼具语言中一律,使用索引获取。字段值的体系能够是 数字、字符串、数组、对象二种。

    从IOS5初阶,应用程式LE提供了对json的原生帮忙(NSJSONSerialization),然而为了合作之前的ios版本,能够运用第三方库来深入分析Json。

    正文将介绍TouchJson、 SBJson 、JSONKit 和 iOS5所支持的原生的json方法,剖判国家气象站API,TouchJson和SBJson须求下载他们的库

    二、大家为什么要用JSON格式的数目?

      JSON 能够将 JavaScript 对象中意味着的一组数据调换为字符串,然后就足以在函数之间轻巧地传递这一个字符串,也许在异步应用程序元帅字符串从 Web 客户机传递给劳务器端程序。那么些字符串看起来有个别奇异,不过JavaScript很轻巧解释它,并且JSON 能够表示比"名称 / 值对"更目眩神摇的结构。比如,可以象征数组和千头万绪的指标,而不光是键和值的简约列表。

      JSON作为数据包格式传输的时候具有更加高的作用,那是因为JSON不像XML那样供给有严谨的关闭标签,那就让有效数据量与总数据包比大大进级,进而减弱同等数量流量的事态下,互连网的传导压力。

     


       JSON格式代替了xml给互联网传输带来了十分大的便利,可是却绝非了xml的侦查破案,尤其是json数据不长的时候,大家会陷于繁琐复杂的数据节点查找中。那时大家就必要一款在线校验工具 BeJson。 

    1.3 JSON 名称/值对

    • JSON 数据的书写格式是:名称/值对。
    • 名称/值对构成人中学的名称写在前头(在双引号中),值对写在后头(同样在双引号中),中间用冒号隔开分离:"firstName":"John"

    正文将介绍TouchJson、SBJson、JSON基特和iOS5所帮助的原生的json方法,分析国家气象站API,TouchJson和SBJson必要下载他们的库

    源码案例:

     三、如何生成JSON格式的数码?


    1.4 JSON 值

    • JSON 值能够是:
      • 数字(整数或浮点数)
      • 字符串(在双引号中)
      • 逻辑值(true 或 false)
      • 数组(在方括号中)
      • 对象(在花括号中)
      • null

    TouchJson包下载:

    TouchJson包下载: http://download.csdn.net/detail/enuola/4523169

    1、利用字典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数据生成失败,请检查数据格式");
    
        }
    

     

     

    1.5 JSON 基础示例

    • 回顾地说,JSON 能够将 JavaScript 对象中意味的一组数据转换为字符串,然后就能够在函数之间轻便地传递那一个字符串,恐怕在异步应用程序准将字符串从 Web 客户机传递给服务器端程序。那个字符串看起来有个别离奇,但是JavaScript 很轻松解释它,况兼 JSON 能够代表比 "名称/值对" 更头晕目眩的布局。举个例子,能够象征数组和目不暇接的指标,而不光是键和值的简易列表。

    • 1、表示名称/值对:

      • 依据最简便的形式,能够用下边那样的 JSON 表示 "名称/值对":

        {"firstName":"Brett"}
        
      • 其一示例非常基本,并且实际比同样的纯文本 "名称/值对" 占用越来越多的上空:

            firstName=Brett
        
      • 而是,当将三个 "名称/值对" 串在一道时,JSON 就能反映出它的股票总值了。首先,能够成立包括三个 "名称/值对" 的记录,比如:

            {"firstName":"Brett", "lastName":"McLaughlin", "email":"aaaa"}
        
      • 从语法方面来看,那与 "名称/值对" 相比较并未有极大的优势,可是在这种意况下 JSON 更易于选择,并且可读性更加好。举个例子,它分明地意味着以上多少个值都以一样记录的一片段;花括号使这几个值有了某种关联。

    • 2、表示数组

      • 当必要代表一组值时,JSON 不但能够增长可读性,况且能够减去复杂性。举例,假设您愿意代表一位名列表。在 XML 中,供给多多上马标识和了结标识;若是利用规范的 "名称/值对"(就好像在本连串前面小说中看到的这种名 "名称/值对"),那么必须树立一种专有的数目格式,可能将键名称修改为 person1-firstName 这样的花样。即使应用 JSON,就只需将多少个带花括号的笔录分组在一同:

            {
                "people":[
                        {"firstName":"Brett", "lastName":"McLaughlin", "email":"aaaa"},
                        {"firstName":"Jason", "lastName":"Hunter", "email":"bbbb"},
                        {"firstName":"Elliotte", "lastName":"Harold", "email":"cccc"}
                        ]
            }
        
      • 那轻松通晓。在那几个示例中,独有一个名叫 people 的变量,值是带有七个条文的数组,每一个条款是一人的记录,在那之中积累名、姓和电子邮件地址。上边的演示演示怎么样用括号将记录组合成一个值。当然,能够运用同一的语法表示五个值(每种值包括多少个记录):

            {
                "programmers":[
                            {"firstName": "Brett", "lastName": "McLaughlin", "email": "aaaa"},
                            {"firstName": "Jason", "lastName": "Hunter", "email": "bbbb"},
                            {"firstName": "Elliotte", "lastName": "Harold", "email": "cccc"}
                            ],
        
                "authors":[
                        {"firstName": "Isaac", "lastName": "Asimov", "genre": "sciencefiction"},
                        {"firstName": "Tad", "lastName": "Williams", "genre": "fantasy"},
                        {"firstName": "Frank", "lastName": "Peretti", "genre": "christianfiction"
                        }
                        ],
        
                "musicians":[
                            {"firstName": "Eric", "lastName": "Clapton", "instrument": "guitar"},
                            {"firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano"
                            }
                            ]
            }
        
      • 那边最值得注意的是,能够代表几个值,种种值进而含有八个值。不过还应该专注,在不相同的主条款(programmers、authors 和 musicians)之间,记录中其实的 "名称/值对" 能够不相同样。JSON 是全然动态的,允许在 JSON 结构的中等改变表示数据的措施。在拍卖 JSON 格式的多寡时,未有索要坚守的预约义的羁绊。所以,在同一的数据结构中,能够退换表示数据的格局,以致足以以不相同措施表示一致事物。

    SBJson包下载:

    SBJson 包下载: http://download.csdn.net/detail/enuola/4523177

     2、通过JSON种类化能够调换数组,但退换结果不是基准的JSON格式。

       NSArray *array = @[@"qn", @18, @"ya", @"wj"];
    
        BOOL isYes = [NSJSONSerialization isValidJSONObject:array];
    
        if (isYes) {
            NSLog(@"可以转换");
    
            NSData *data = [NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];
    
            [data writeToFile:@"/Users/SunnyBoy/Sites/JSON_XML/base" atomically:YES];
    
        } else {
    
            NSLog(@"JSON数据生成失败,请检查数据格式");
    
        }
    

     

     


    一、JSON是什么?

      JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的三个子集。 JSON选拔完全部独用立于言语的文本格式,可是也采纳了近似于C语言家族的习贯(满含C、C 、C#、Java、JavaScript、Perl、Python等)。这么些特征使JSON成为卓绝的数据调换语言。 易于人观察和编写制定,同不平时候也轻易机器深入分析和浮动(一般用于升高网络传输速率)。

    JSON数据首要有三种数据结构,一种是键/值,另一种是数组的款型来表示。

    1.6 JSON 具体情势

    • 1、对象是二个冬季的 “名称/值对” 会集

      • 1)多少个对象以 “{” 左括号初步,“}” 右括号截至。
      • 2)种种 “名称” 后跟多个 “:” 冒号;
      • 3)“名称/值对” 之间使用 “,” 逗号分隔。

      • 事例:表示人的叁个指标:

            {
                "姓名":"大憨",
                "年龄":24
            }
        
    • 2、数组是值(value)的稳步集中

      • 1)三个数组以 “[” 左中括号起初,“]” 右中括号截止。
      • 2)值时期使用 “,” 逗号分隔。

      • 事例:一组学生

            {
                "学生": [{"姓名":"小明","年龄":23}, {"姓名":"大憨","年龄":24}]
            }
        
            说明:此 Json 对象包括了一个学生数组,而学生数组中的值又是两个 Json 对象。
        
    • 3、值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)也许数组(array)。这么些构造能够嵌套。

    • 4、字符串(string)是由双引号包围的随便数量 Unicode 字符的汇聚,使用反斜线转义。二个字符(character)即贰个单独的字符串(character string)。 字符串(string)与 C 大概 Java 的字符串特别相像。

    • 5、数值(number)也与 C 恐怕 Java 的数值特别相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

    JSONKit包下载:

    JSONKit包下载:http://download.csdn.net/detail/enuola/4523160

    四、怎么样分析JSON格式的多少?

    1、JSON 数据的书写格式是:名称/值对。如:

    {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}
    

     

    1.7 JSON 和 XML 的比较

    • 可读性
      • JSON 和 XML 的可读性可谓春兰秋菊,一边是轻巧的语法,一边是标准的价签格局,很难分出输赢。
    • 可扩大性
      • XML 天生有很好的扩大性,JSON 当然也是有,未有啥样是 XML 能够扩大而 JSON 却不可能扩展的。可是 JSON 在 Javascript 主场应战,能够储存Javascript 复合对象,有着 XML 不可比拟的优势。
    • 编码难度
      • XML 有增加的编码工具,举例 Dom4j、JDom 等,JSON 也许有提供的工具。无工具的意况下,相信熟稔的开垦职员同样能异常快的写出想要的 XML 文书档案和 JSON 字符串,可是,XML 文书档案要多过多结构上的字符。
    • 解码难度

      • XML 的辨析方法有三种:
        • 一是经过文书档案模型分析,约等于经过父标签索引出一组标记。例如:xmlData.getElementsByTagName("tagName"),可是那样是要在预先精通文书档案结构的情形下使用,无法举行通用的卷入。
        • 别的一种办法是遍历节点(document 以及 childNodes)。这些能够透过递回来完结,但是深入分析出来的数码照旧是格局各异,往往也不可能满足预先的要求。
        • 凡是那样可扩展的布局数据分析起来自然都很困难。
      • JSON 也一律如此:
        • 若是预先精晓 JSON 结构的情景下,使用 JSON进行数据传递简直是太卓绝了,能够写出很实用华美可读性强的代码。假诺你是纯粹的前台开荒职员,一定会要命喜欢 JSON。不过假诺你是一个采用开采职员,就不是那么喜欢了,毕竟XML 才是真的的结构化标识语言,用于进行数量传递。
        • 而一旦不晓得 JSON 的社团而去深入分析 JSON 的话,这大约是恐怖的梦。费时费劲不说,代码也会变得冗余拖沓,获得的结果也不满。然而这么也不影响众多前台开拓人士采纳JSON。因为 json.js 中的 toJSONString() 就能够看看 JSON 的字符串结构。当然不是接纳这一个字符串,那样如故是惊恐不已的梦。常用 JSON 的人来看这一个字符串之后,就对 JSON 的构造很明知道,就更易于的操作 JSON。
      • 如上是在 Javascript 中仅对于数据传递的 XML 与 JSON 的辨析。在 Javascript 地盘内,JSON 究竟是主场应战,其优势当然要远远优于于 XML。即便 JSON 中蕴藏 Javascript 复合对象,何况不知底其布局来讲,作者相信广大程序员也完全一样是哭着分析JSON 的。

      • 除外上述之外,JSON 和 XML 还恐怕有此外一个相当的大的差异在于有效数据率。JSON 作为数据包格式传输的时候全体越来越高的功用,那是因为 JSON 不像 XML 那样要求有严刻的关闭标签,那就让有效数据量与总量据包比大大晋级,进而裁减同等数量流量的景观下,网络的传输压力 。

    上面包车型大巴全部程序源码包下载:

    上边包车型大巴一体化程序源码包下载:http://download.csdn.net/detail/enuola/4523223

    1、使用TouchJSon分析方法:(需导入包:#import "TouchJson/JSON/CJSONDeserializer.h")

    //使用TouchJson来解析北京的天气
    //获取API接口
    NSURL *url = [NSURL URLWithString:@"http://m.weather.com.cn/data/101010100.html"];
    
    //定义一个NSError对象,用于捕获错误信息
    NSError *error;
    NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
    
    NSLog(@"jsonString--->%@",jsonString);
    
    //将解析得到的内容存放字典中,编码格式为UTF8,防止取值的时候发生乱码
    NSDictionary *rootDic = [[CJSONDeserializer deserializer] deserialize:[jsonString dataUsingEncoding:NSUTF8StringEncoding] error:&error];
    
    //因为返回的Json文件有两层,去第二层内容放到字典中去
    NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];
    NSLog(@"weatherInfo--->%@",weatherInfo);
    
    //取值打印
    NSLog(@"%@",[NSString stringWithFormat:@"今天是 %@  %@  %@  的天气状况是:%@  %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]]);
    

     

    2、JSON 数据的书写格式是:数组格式,当须要代表一组值时,JSON 不但能够进步可读性,并且能够减小复杂性。如:

    {
        "programmers": [{
            "firstName": "Brett",
            "lastName": "McLaughlin",
            "email": "aaaa"
        }, {
            "firstName": "Elliotte",
            "lastName": "Harold",
            "email": "cccc"
        }],
        "authors": [{
            "firstName": "Isaac",
            "lastName": "Asimov",
            "genre": "sciencefiction"
        }, {
            "firstName": "Frank",
            "lastName": "Peretti",
            "genre": "christianfiction"
        }],
        "musicians": [{
            "firstName": "Eric",
            "lastName": "Clapton",
            "instrument": "guitar"
        }, {
            "firstName": "Sergei",
            "lastName": "Rachmaninoff",
            "instrument": "piano"
        }]
    }
    

     

     

     


    1.8 iOS JSON 剖析第三方框架

    • JSON 深入分析常用的第三方框架有:JSONKit、SBJson、TouchJSON,其性从左到右依次减少。

    • JSONKit 已经在 二〇一一 年结束更新,官方说 JSONKit 比苹果原生的 NSJSONSerialization 分析速度快,实地度量其实苹果原生的 NSJSONSerialization 分析速度越来越快。

    • 出于 NSJSONSerialization 在 iOS 5.0 之后才面世,NSJSONSerialization 适用于 iOS 5.0 版本的 iOS 开拓。JSONKit 框架适用于 iOS 4.0 及从前版本的 iOS 开拓。

    PS:

    免费培育课:

     2、使用SBJson分析方法:(需导入包:#import "SBJson/SBJson.h")

    //使用SBJson解析北京的天气
    NSURL *url = [NSURL URLWithString:@"http://www.weather.com.cn/adat/sk/101010100.html"];
    
    NSError *error = nil;
    
    NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
    
    SBJsonParser *parser = [[SBJsonParser alloc] init];
    
    NSDictionary *rootDic = [parser objectWithString:jsonString error:&error];
    
    NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];
    
    NSLog(@"%@", [NSString stringWithFormat:@"今天是 %@  %@  %@  的天气状况是:%@  %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]]);
    

      

    二、大家怎么要用JSON格式的数据?

      JSON 能够将 JavaScript 对象中表示的一组数据转变为字符串,然后就能够在函数之间轻巧地传递这几个字符串,或许在异步应用程序元帅字符串从 Web 客户机传递给服务器端程序。这么些字符串看起来有个别奇怪,可是JavaScript很轻便解释它,何况JSON 能够象征比"名称 / 值对"更复杂的构造。比如,能够代表数组和复杂性的对象,而不只是键和值的大致列表。

      JSON作为数据包格式传输的时候全体更加高的功能,那是因为JSON不像XML那样需求有严俊的关闭标签,那就让有效数据量与总量据包比大大晋级,进而收缩同等数量流量的情景下,互联网的传输压力。

     


    2、系统方法 JSON 数据剖析

    • Objective-C

      • 解析 json 数据

            /*
                反序列化:将从服务器接收到的二进制数据转换成 NSDictionary / NSArray 的过程,简化程序开发,便于后续的字典转模型。
                数据必须符合 json 格式,用来接收的容器必须和 json 的最外层保持一致。
        
                NSJSONReadingMutableContainers  = (1UL << 0),  // 容器可变,NSMutableDictionary 或 NSMutableArray。
                NSJSONReadingMutableLeaves      = (1UL << 1),  // 叶子可变,返回的 JSON 对象中字符串的值为 NSMutableString。
                NSJSONReadingAllowFragments     = (1UL << 2)   // 允许 JSON 字符串最外层既不是 NSArray 也不是 NSDictionary,
                                                                  但必须是有效的 JSON 片段
        
                    反序列化中的可变不可变,实际用处不大,后续紧接着就是字典转模型。因此输入 0 效率最好。如果今后看到 ** 类型的参数,
                又不想获取对应的内容,传递 NULL 即可。传入 nil 不会抱错。
            */
        
            // 从本地文件中读取数据
            NSData *jsonData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"JsonDataFile" ofType:@"txt"]];
        
            // 解析 json 数据
            id result = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:NULL];
        
      • 生成 json 数据

            /*
                序列化:将字典或者数组发送给服务器之前,转换成二进制数据,方便网络传输。
        
                生成 json 数据的对象必须满足以下条件:
                    对象最外层必须是 NSArray 或者 NSDictionary。
                    容器内的所有数据必须是 NSString, NSNumber, NSArray, NSDictionary, 或者 NSNull 类型。
                    字典的所有 key 都是 NSString 格式。
                    NSNumber 不能是 NaN(非数值) 或者 infinity(无限大)。
        
                NSJSONWritingOptions:
                    NSJSONWritingPrettyPrinted = (1UL << 0)             漂亮的格式打印
        
                    使用 0 时,生成的数据格式如下,将 JSON 数据发送给服务器时可以使用该种格式。
        
                    {"age":8,"score":99,"add":"beijing","name":"xiaoxin"}
        
                    使用 1 时,生成的数据格式如下,将 JSON 数据保存到本地时可以使用该种格式。
        
                    {
                        "age" : 8,
                        "score" : 99,
                        "add" : "beijing",
                        "name" : "xiaoxin"
                    }
            */
        
            // Foundation object
            NSDictionary *dicitionary = @{@"name":@"xiaoxin", @"age":@8, @"score":@99, @"add":@"beijing"};
        
            // 判断 Foundation 对象是否可以生成 json 数据
            BOOL isValid = [NSJSONSerialization isValidJSONObject:dicitionary];
        
            // 生成 json 数据
            NSData *jData = [NSJSONSerialization dataWithJSONObject:dicitionary options:0 error:NULL];
        
    • Swift

      • 解析 json 数据

            /*
                反序列化:将从服务器接收到的二进制数据转换成 NSDictionary / NSArray 的过程,简化程序开发,便于后续的字典转模型。
                数据必须符合 json 格式,用来接收的容器必须和 json 的最外层保持一致。
        
                MutableContainers  // 容器可变,NSMutableDictionary 或 NSMutableArray。
                MutableLeaves      // 叶子可变,返回的 JSON 对象中字符串的值为 NSMutableString。
                AllowFragments     // 允许 JSON 字符串最外层既不是 NSArray 也不是 NSDictionary,但必须是有效的 JSON 片段
        
                    反序列化中的可变不可变,实际用处不大,后续紧接着就是字典转模型。因此输入 0 效率最好。如果今后看到 ** 类型的参数,
                又不想获取对应的内容,传递 NULL 即可。传入 nil 不会抱错。
            */
        
            // 解析 json 数据
            let jsonDataDic: AnyObject? = try? NSJSONSerialization.JSONObjectWithData(jsonData!, options: .MutableContainers)
        
      • 生成 json 数据

            /*
                序列化:将字典或者数组发送给服务器之前,转换成二进制数据,方便网络传输。
        
                生成 json 数据的对象必须满足以下条件:
        
                    对象最外层必须是 NSArray 或者 NSDictionary。
                    容器内的所有数据必须是 NSString, NSNumber, NSArray, NSDictionary, 或者 NSNull 类型。
                    字典的所有 key 都是 NSString 格式。
                    NSNumber 不能是 NaN(非数值) 或者 infinity(无限大)。
            */
        
            // Foundation object
            let dicitionary:[String:AnyObject] = ["name":"xiaoxin", "age":8, "score":99, "add":"beijing"]
        
            // 判断 Foundation 对象是否可以生成 json 数据
            let isValid:Bool = NSJSONSerialization.isValidJSONObject(dicitionary)
        
            // 生成 json 数据
            let jData:NSData? = try? NSJSONSerialization.dataWithJSONObject(dicitionary, options: .PrettyPrinted)
        

    国家气象站提供的天气预先报告接口

    PS:

    3、使用IOS5自带深入分析类NSJSONSerialization方法深入分析:(无需导入包,IOS5支持,低版本IOS不帮助)

    // 从中国天气预报网请求数据
        NSURL *url = [ NSURL URLWithString:@"http://www.weather.com.cn/adat/sk/101010100.html"];
    
        // 创建请求
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
        [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    
            // 在网络完成的 Block 回调中,要增加错误机制.
            // 失败机制处理: 错误的状态码!
    
            // 最简单的错误处理机制:
            if (data && !error) {
    
                // JSON格式转换成字典,IOS5中自带解析类NSJSONSerialization从response中解析出数据放到字典中
                id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
    
                NSDictionary *dict = obj[@"weatherinfo"];
    
                NSLog(@"%@---%@", dict, dict[@"city"]);
            }
    
        }] resume];
    

     

     三、怎样生成JSON格式的数量?

    3、JSONKit 格局 JSON 数据解析

    接口地址有八个:

    国家气象台提供的天气预先报告接口

    4、使用JSON基特的剖析方法:(需导入包:#import "JSONKit/JSONKit.h")

    //如果json是“单层”的,即value都是字符串、数字,可以使用objectFromJSONString
    NSString *json1 = @"{"a":123, "b":"abc"}";
    NSLog(@"json1:%@",json1);
    
    NSDictionary *data1 = [json1 objectFromJSONString];
    NSLog(@"json1.a:%@",[data1 objectForKey:@"a"]);
    NSLog(@"json1.b:%@",[data1 objectForKey:@"b"]);
    
    //如果json有嵌套,即value里有array、object,如果再使用objectFromJSONString,程序可能会报错(测试结果表明:使用由网络或得到的php/json_encode生成的json时会报错,但使用NSString定义的json字符串时,解析成功),最好使用objectFromJSONStringWithParseOptions:
    NSString *json2 = @"{"a":123, "b":"abc", "c":[456, "hello"], "d":{"name":"张三", "age":"32"}}";
    NSLog(@"json2:%@", json2);
    
    NSDictionary *data2 = [json2 objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];
    NSLog(@"json2.c:%@", [data2 objectForKey:@"c"]);
    NSLog(@"json2.d:%@", [data2 objectForKey:@"d"]);
    

     

     

    1、利用字典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数据生成失败,请检查数据格式");
    
        }
    

     

    3.1 添加 JSONKit

    • GitHub 网址:

    • JSONKit 使用 MRC

    • Objective-C

          // 添加第三方库文件
          JSONKit
      
          // 在 TARGETS -> Build Phases -> Compile Sources -> ...in .../JSONKit 后添加
          -fno-objc-arc
      
          // 包含头文件
          #import "JSONKit.h"
      
    • Swift

          // 添加第三方库文件
          JSONKit
      
          // 在 TARGETS -> Build Phases -> Compile Sources -> ...in .../JSONKit 后添加
          -fno-objc-arc
      
          // 创建名为 “项目名-Bridging-Header.h” 的桥接头文件,如:
          SwiftJSON-Bridging-Header.h
      
          // 在 TARGETS -> Build Setting -> Swift Compiler - Code generation -> Objective-C Bridging Header 中
          // 添加 “项目名/项目名-Bridging-Header.h” 路径,如:
          SwiftJSON/SwiftJSON-Bridging-Header.h
      
          // 在创建的桥接头文件中包含头文件
          #import "JSONKit.h"
      

    接口地址有多个:

    和谐提醒:

    4中解析方法的相持统一:

    系统的API的辨析速度最快。

    SBJSON的剖判速度为倒数第二差。

    与系统API较为附近的是JSONKit。

    在此后的开采进度中,建议采用系统的API或JSONKit来对JSON数据实行分析。

     

    假定本文有其余不当之处,接待拍砖指正,与君共勉, 多谢!

     

    本文将从多少个地点对IOS开采中JSON格式数据的转移与深入分析实行疏解: 一、JSON是何许?...

     2、通过JSON连串化能够调换数组,但改变结果不是标准的JSON格式。

       NSArray *array = @[@"qn", @18, @"ya", @"wj"];
    
        BOOL isYes = [NSJSONSerialization isValidJSONObject:array];
    
        if (isYes) {
            NSLog(@"可以转换");
    
            NSData *data = [NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];
    
            [data writeToFile:@"/Users/SunnyBoy/Sites/JSON_XML/base" atomically:YES];
    
        } else {
    
            NSLog(@"JSON数据生成失败,请检查数据格式");
    
        }
    

     

     


    3.2 JSONKit 数据深入分析

    • Objective-C

      • JSONDecoder 格局解析

            // 从本地文件中读取数据
            NSData *jsonData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"JsonDataFile" ofType:@"txt"]];
        
            id result = [[JSONDecoder decoder] objectWithData:jsonData];
        
            NSLog(@"%@ %@", result, [result class]);
        
      • JSONString 解析

            // 单层 JSONString 解析
            /*
                如果 json 是 “单层” 的,即 value 都是字符串、数字,可以使用 objectFromJSONString
            */
        
                // 单层 JSONString 数据
                NSString *jsonStr1 = @"{"a":123, "b":"abc"}";
        
                // 返回可变结果使用 mutableObjectFromJSONString 方法
                NSDictionary *jsonStrDic1 = [jsonStr1 objectFromJSONString];
        
            // 嵌套 JSONString 解析
            /*
                    如果 json 有嵌套,即 value 里有 array、object,如果再使用 objectFromJSONString,程序可能会报错,
                测试结果表明:使用由网络或得到的 php/json_encode 生成的 json 时会报错,但使用 NSString 定义的 json 字符串时,
                解析成功,最好使用 objectFromJSONStringWithParseOptions:
            */
        
                // 嵌套 JSONString 数据
                NSString *jsonStr2 = @"{"a":123, "b":"abc", "c":[456, "hello"], "d":{"name":"张三", "age":"32"}}";
        
                // 返回可变结果使用 mutableObjectFromJSONStringWithParseOptions 方法
                NSDictionary *jsonStrDic2 = [jsonStr2 objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];
        
      • JSONData 解析

            // 单层 JSONData 解析
        
                NSData *jsonData1 = [@"{"a":123, "b":"abc"}" dataUsingEncoding:NSUTF8StringEncoding];
        
                // 返回可变结果使用 mutableObjectFromJSONData 方法
                NSDictionary *jsonDataDic1 = [jsonData1 objectFromJSONData];
        
            // 嵌套 JSONData 解析
        
                // 从本地文件中读取数据
                NSData *jsonData2 = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"JsonDataFile" ofType:@"txt"]];
        
                // 返回可变结果使用 mutableObjectFromJSONStringWithParseOptions 方法
                NSDictionary *jsonDataDic2 = [jsonData2 objectFromJSONDataWithParseOptions:JKParseOptionLooseUnicode];
        
      • 生成 JSONString 数据

            // NSString -> JSONString
        
                NSString *str1 = @"{a":123, "b":"abc"}";
        
                // 默认参数为 JKSerializeOptionNone,includeQuotes 为 YES
                NSString *jsonStrFromStr1 = [str1 JSONString];
        
                // includeQuotes 为 NO 时,编码后的数据最外层不含引号
                NSString *jsonStrFromStr2 = [str1 JSONStringWithOptions:JKSerializeOptionNone includeQuotes:NO error:nil];
        
            // NSArray/NSDictionary -> JSONString
        
                NSDictionary *dic1 = @{@"name":@"xiaoxin", @"age":@8, @"Info":@{@"score":@99, @"add":@"beijing"}};
        
                // 默认参数为 JKSerializeOptionNone
                NSString *jsonStrFromDic1 = [dic1 JSONString];
        
                NSString *jsonStrFromDic2 = [dic1 JSONStringWithOptions:JKSerializeOptionEscapeUnicode error:nil];
        
      • 生成 JSONData 数据

            // NSString -> JSONData
        
                NSString *str2 = @"{a":123, "b":"abc"}";
        
                // 默认参数为 JKSerializeOptionNone,includeQuotes 为 YES
                NSData *jsonDataFromStr1 = [str2 JSONData];
        
                NSData *jsonDataFromStr2 = [str2 JSONDataWithOptions:JKSerializeOptionNone includeQuotes:NO error:nil];
        
            // NSArray/NSDictionary -> JSONData
        
                NSDictionary *dic2 = @{@"name":@"xiaoxin", @"age":@8, @"Info":@{@"score":@99, @"add":@"beijing"}};
        
                // 默认参数为 JKSerializeOptionNone
                NSData *jsonDataFromDic1 = [dic2 JSONData];
        
                NSData *jsonDataFromDic2 = [dic2 JSONDataWithOptions:JKSerializeOptionEscapeUnicode error:nil];
        
    • Swift

      • JSONDecoder 格局解析

            // 从本地文件中读取数据
            let jsonData:NSData = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("JsonDataFile", ofType: "txt")!)!
        
            let result:AnyObject = JSONDecoder.decoder().objectWithData(jsonData)
        
            print(result);
        
      • JSONString 解析

            // 单层 JSONString 解析
            /*
                如果 json 是 “单层” 的,即 value 都是字符串、数字,可以使用 objectFromJSONString
            */
        
                // 单层 JSONString 数据
                let jsonStr1:String = "{"a":123, "b":"abc"}"
        
                // 返回可变结果使用 mutableObjectFromJSONString 方法
                let jsonStrDic1:AnyObject = jsonStr1.objectFromJSONString()
        
            // 嵌套 JSONString 解析
            /*
                    如果 json 有嵌套,即 value 里有 array、object,如果再使用 objectFromJSONString,程序可能会报错,
                测试结果表明:使用由网络或得到的 php/json_encode 生成的 json 时会报错,但使用NSString 定义的 json 字符串时,
                解析成功,最好使用 objectFromJSONStringWithParseOptions:
            */
        
                // 嵌套 JSONString 数据
                let jsonStr2:String = "{"a":123, "b":"abc", "c":[456, "hello"], "d":{"name":"张三", "age":"32"}}"
        
                // 返回可变结果使用 mutableObjectFromJSONStringWithParseOptions 方法
                let jsonStrDic2:AnyObject = jsonStr2.objectFromJSONStringWithParseOptions(UInt(JKParseOptionLooseUnicode))
        
      • JSONData 解析

            // 单层 JSONData 解析
        
                let jsonData1:NSData = "{"a":123, "b":"abc"}".dataUsingEncoding(NSUTF8StringEncoding)!
        
                // 返回可变结果使用 mutableObjectFromJSONData 方法
                let jsonDataDic1:AnyObject = jsonData1.objectFromJSONData()
        
            // 嵌套 JSONData 解析
        
                // 从本地文件中读取数据
                let jsonData2:NSData = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("JsonDataFile", ofType: "txt")!)!
        
                // 返回可变结果使用 mutableObjectFromJSONDataWithParseOptions 方法
                let jsonDataDic2:AnyObject = jsonData2.objectFromJSONDataWithParseOptions(UInt(JKParseOptionLooseUnicode))
        
      • 生成 JSONString 数据

            // String -> JSONString
        
                let str1:String = "{a":123, "b":"abc"}"
        
                // 默认参数为 JKSerializeOptionNone,includeQuotes 为 YES
                let jsonStrFromStr1:String = str1.JSONString()
        
                // includeQuotes 为 NO 时,编码后的数据最外层不含引号
                let jsonStrFromStr2:String = try! str1.JSONStringWithOptions(UInt(JKSerializeOptionNone), includeQuotes:false)
        
            // NSArray/NSDictionary -> JSONString
        
                let dic1:NSDictionary = ["name":"xiaoxin", "age":8, "Info":["score":99, "add":"beijing"]]
        
                // 默认参数为 JKSerializeOptionNone
                let jsonStrFromDic1:String = dic1.JSONString()
        
                let jsonStrFromDic2:String = try! dic1.JSONStringWithOptions(UInt(JKSerializeOptionEscapeUnicode))
        
      • 生成 JSONData 数据

            // String -> JSONData
        
                let str2:String = "{a":123, "b":"abc"}"
        
                // 默认参数为 JKSerializeOptionNone,includeQuotes 为 YES
                let jsonDataFromStr1:NSData = str2.JSONData()
        
                // includeQuotes 为 NO 时,编码后的数据最外层不含引号
                let jsonDataFromStr2:NSData = try! str2.JSONDataWithOptions(UInt(JKSerializeOptionNone), includeQuotes:false)
        
            // NSArray/NSDictionary -> JSONData
        
                let dic2:NSDictionary = ["name":"xiaoxin", "age":8, "Info":["score":99, "add":"beijing"]]
        
                // 默认参数为 JKSerializeOptionNone
                let jsonDataFromDic1:NSData = dic2.JSONData()
        
                let jsonDataFromDic2:NSData = try! dic2.JSONDataWithOptions(UInt(JKSerializeOptionEscapeUnicode))
        

    四、如何分析JSON格式的数量?

    4、JSONKit 与 NSJSONSerialization 比较测量检验

        static int largeNumber = 100 * 1000;
    
        // JSONKit 解析
    
            NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://192.168.88.200/demo.json"]];
    
            NSLog(@"JSONKit start");
            CFAbsoluteTime start1 = CFAbsoluteTimeGetCurrent();
            for (int i = 0; i < largeNumber;   i) {
                [[JSONDecoder decoder] objectWithData:jsonData];
            }
            NSLog(@"JSONKit end: %f n", CFAbsoluteTimeGetCurrent() - start1);
    
        // NSJSONSerialization 解析
    
            NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://192.168.88.200/demo.json"]];
    
            NSLog(@"NSJSONSerialization start");
            CFAbsoluteTime start2 = CFAbsoluteTimeGetCurrent();
            for (int i = 0; i < largeNumber;   i) {
                [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:NULL];
            }
            NSLog(@"NSJSONSerialization end: %f", CFAbsoluteTimeGetCurrent() - start2);
    

    1、使用TouchJSon深入分析方法:(需导入包:#import "TouchJson/JSON/CJSONDeserializer.h")

    //使用TouchJson来解析北京的天气
    //获取API接口
    NSURL *url = [NSURL URLWithString:@"http://m.weather.com.cn/data/101010100.html"];
    
    //定义一个NSError对象,用于捕获错误信息
    NSError *error;
    NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
    
    NSLog(@"jsonString--->%@",jsonString);
    
    //将解析得到的内容存放字典中,编码格式为UTF8,防止取值的时候发生乱码
    NSDictionary *rootDic = [[CJSONDeserializer deserializer] deserialize:[jsonString dataUsingEncoding:NSUTF8StringEncoding] error:&error];
    
    //因为返回的Json文件有两层,去第二层内容放到字典中去
    NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];
    NSLog(@"weatherInfo--->%@",weatherInfo);
    
    //取值打印
    NSLog(@"%@",[NSString stringWithFormat:@"今天是 %@  %@  %@  的天气状况是:%@  %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]]);
    

     

    其三接口音讯较为详细,提供的是6天的气象,关于API所再次回到的音信请见开源无需付费天气预告接口API以及全国具有地点代码!!,全国各城市相应这二个id号,依据退换id好大家就足以深入分析出来种种城市相应天气;

     2、使用SBJson剖判方法:(需导入包:#import "SBJson/SBJson.h")

    //使用SBJson解析北京的天气
    NSURL *url = [NSURL URLWithString:@"http://www.weather.com.cn/adat/sk/101010100.html"];
    
    NSError *error = nil;
    
    NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
    
    SBJsonParser *parser = [[SBJsonParser alloc] init];
    
    NSDictionary *rootDic = [parser objectWithString:jsonString error:&error];
    
    NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];
    
    NSLog(@"%@", [NSString stringWithFormat:@"今天是 %@  %@  %@  的天气状况是:%@  %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]]);
    

      

    下边介绍各类艺术深入分析JSON:

    其三接口音信较为详细,提供的是6天的天气,关于API所重回的音信请见开源免费天气预告接口API以及全国全体地点代码!!(国家气象站提供),全国各城市相应这三个id号,依据改造id好我们就可以深入分析出来各样城市相应气候;

    3、使用IOS5自带解析类NSJSONSerialization方法解析:(不需求导入包,IOS5支撑,低版本IOS不帮忙)

    // 从中国天气预报网请求数据
        NSURL *url = [ NSURL URLWithString:@"http://www.weather.com.cn/adat/sk/101010100.html"];
    
        // 创建请求
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
        [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    
            // 在网络完成的 Block 回调中,要增加错误机制.
            // 失败机制处理: 错误的状态码!
    
            // 最简单的错误处理机制:
            if (data && !error) {
    
                // JSON格式转换成字典,IOS5中自带解析类NSJSONSerialization从response中解析出数据放到字典中
                id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
    
                NSDictionary *dict = obj[@"weatherinfo"];
    
                NSLog(@"%@---%@", dict, dict[@"city"]);
            }
    
        }] resume];
    

     

    第第一建工公司立三个新的工程,(注意不要采用ARC机制)增添如下控件:

    下边介绍七种方式分析JSON:

    4、使用JSONKit的辨析方法:(需导入包:#import "JSONKit/JSONKit.h")

    //如果json是“单层”的,即value都是字符串、数字,可以使用objectFromJSONString
    NSString *json1 = @"{"a":123, "b":"abc"}";
    NSLog(@"json1:%@",json1);
    
    NSDictionary *data1 = [json1 objectFromJSONString];
    NSLog(@"json1.a:%@",[data1 objectForKey:@"a"]);
    NSLog(@"json1.b:%@",[data1 objectForKey:@"b"]);
    
    //如果json有嵌套,即value里有array、object,如果再使用objectFromJSONString,程序可能会报错(测试结果表明:使用由网络或得到的php/json_encode生成的json时会报错,但使用NSString定义的json字符串时,解析成功),最好使用objectFromJSONStringWithParseOptions:
    NSString *json2 = @"{"a":123, "b":"abc", "c":[456, "hello"], "d":{"name":"张三", "age":"32"}}";
    NSLog(@"json2:%@", json2);
    
    NSDictionary *data2 = [json2 objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];
    NSLog(@"json2.c:%@", [data2 objectForKey:@"c"]);
    NSLog(@"json2.d:%@", [data2 objectForKey:@"d"]);
    

     

     

    如上海教室所示。上边展出程序代码:

    第第一建工公司立一个新的工程,(注意不要选择ARC机制)增添如下控件:

    温馨提醒:

    4中深入分析方法的相比较:

    系统的API的解析速度最快。

    SBJSON的解析速度为倒数第二差。

    与系统API较为类似的是JSONKit。

    在之后的付出进程中,提议选择系统的API或JSONKit来对JSON数据开始展览分析。

     

    例如本文有别的错误之处,款待拍砖指正,与君共勉, 多谢!

     

    文件ViewController.h中:

     

    #import

    如上海教室所示。上边展出程序代码:

    @interface ViewController :UIViewController

    文件 ViewController.h 中:

    @property (retain,nonatomic) IBOutlet UITextView *txtView;

    #import <UIKit/UIKit.h>

    - btnPressTouchJson:sender;

     

    本文由1010cc时时彩经典版发布于操作系统,转载请注明出处:【1010cc时时彩经典版】IOS中Json解析的四种方法,

    关键词: