• IOS开发:官方自带的JSON使用


    apple在ios5的时候提供了json的相关处理api,其中最主要的是NSJSONSerialization类。

    1 + (BOOL)isValidJSONObject:(id)obj;
    2 
    3 + (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
    4 
    5 + (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;

    其中最常用的就是以上3个类方法。

    第一个用来判断当前数据是否可以转换成JSON,

    第二个是把数据转换成JSON,返回NSData,

    第三个就是把JSON解析。

    例子:

     1     NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
     2     [dictionary setValue:@"Xcode" forKey:@"name"];
     3     [dictionary setValue:@"4.6.3" forKey:@"version"];
     4     NSArray *otherValueArray = @[@"File", @"Edit", @"View", @"Navigate"];
     5     [dictionary setValue:otherValueArray forKey:@"navigator"];
     6     
     7     NSError *error = nil;
     8     
     9     //转成JSON
    10     NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary
    11                                                        options:NSJSONWritingPrettyPrinted
    12                                                          error:&error];
    13     if (error)
    14     {
    15         NSLog(@"dic->%@",error);
    16     }
    17     
    18     NSString *jsonString = [NSString stringWithUTF8String:[jsonData bytes]];
    19     
    20     //解析JSON
    21     id resultString = [NSJSONSerialization JSONObjectWithData:jsonData
    22                                                       options:NSJSONReadingMutableLeaves
    23                                                         error:&error];
    24     if (error)
    25     {
    26         NSLog(@"dic->%@",error);
    27     }
    28     
    29     NSArray *navigatorArray = resultString[@"navigator"];
    30     
    31     NSLog(@"
    jsonString:%@
    resultString:%@
    navigatorArray:%@",
    32           jsonString, resultString, navigatorArray);

    NSLog输出结果:

    顺便在提几点,此功能仅限于IOS5才能使用。
    根据网友的测试,这个自带的解析效率比目前网上几个第三方的JSON库都要快。

  • 相关阅读:
    python限定方法参数类型、返回值类型、变量类型等
    双拼自然码
    关于将汉语拼音字母“ü”改成“v”的设想和建议
    数据库转模型图
    python中的捕获异常、异常跟踪
    内部教师爆料:某些民办学校真正的内幕
    炸薯条
    IntelliJ IDEA添加JavaDOC注释 方法 快捷键
    java获取当前路径的方法
    java获取全部子类或接口的全部实现
  • 原文地址:https://www.cnblogs.com/wqxlcdymqc/p/3229705.html
Copyright © 2020-2023  润新知