JSON

  • 什么是JSON

    • JSON是一种轻量级的数据格式,一般用于数据交互
    • 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)
  • JSON的格式很像OC中的字典和数组

    {"name" : "jack", "age" : 10}

    {"names" : ["jack", "rose", "jim"]}

标准JSON格式的注意点:key必须用双引号

  • 要想从JSON中挖掘出具体数据,得对JSON进行解析JSON

    • 转换为 OC数据类型

JSON – OC 转换对照表

JSON OC
大括号{} NSDictionary
中括号[] NSArray
双引号"" NSString
数字10、10.8 NSNumber

JSON解析方案

在iOS中,JSON的常见解析方案有4种

第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,越差)

苹果原生(自带):NSJSONSerialization(性能最好)

NSJSONSerialization的常见方法
JSON数据 > OC对象

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError *)error;

OC对象 > JSON数据

+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError *)error;
- (void)parseJSON
{
    // 0.请求路径
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520000&pwd=520it"];

    // 1.创建请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    // 2.发送请求
    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        //NSJSONReadingMutableContainers = (1UL << 0), // 返回的是一个可变数组或者字段
        //NSJSONReadingMutableLeaves = (1UL << 1), // 不仅返回的最外层是可变的, 内部的子数值或字典也是可变对象
        //NSJSONReadingAllowFragments = (1UL << 2) // 返回的最外侧可不是字典或者数组 可以是如 "10"

        // 解析JSON
        //kNilOptions转换成不可变时 性能最好
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

        NSLog(@"%@", dict[@"error"]);
    }];
}

results matching ""

    No results matching ""