美文网首页
iOS JSON解析之NSJSONSerialization

iOS JSON解析之NSJSONSerialization

作者: ninazhang | 来源:发表于2017-04-22 10:16 被阅读0次

    1、概念

    JSON是一种轻量级的数据格式,用于数据交互服务器返回给客户端的数据。NSJSONSerialization是苹果原生的json解析方式,使用这个类可以将JSON转化为Foundation对象,也可将Foundatio对象转化为JSON。

    2、使用NSJSONSerialization进行JSON解析的前提

    An object that may be converted to JSON must have the following properties:

    (1)顶层对象必须是NSArray或NSDictionary

      (2) 所有对象必须是NSString,NSNumber,NSArray,NSDictionary or NULL

      (3)所有字典的键值都是字符串类型的

    (4)数值不能是非数值或无穷大

    3、NSJSONReadingOptions参数的含义

    typedef enum NSJSONReadingOptions : NSUInteger {

    NSJSONReadingMutableContainers = (1UL << 0),//被创建的数字或字典是可变的

    NSJSONReadingMutableLeaves = (1UL << 1),//Json对象中创建的字符串是NSMutableString

    NSJSONReadingAllowFragments = (1UL << 2)//允许顶层对象不是NSArrayh

    } NSJSONReadingOptions;

    4、JSON 转化为 Foundation Object

    -(NSDictionary *)objectConvertByJsonStr:(NSString *)jsonStr

    {

    NSData *data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];

    NSError *error;

    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

    if (error) {

    NSLog(@"error:%@",error);

    }

    return dict;

    }

    5、Foundation object 转化为 Json

    -(NSString *)jsonStrConvertByObject:(NSDictionary *)dict

    {

    //whether a given object can be converted to JSON data.

    if ([NSJSONSerialization isValidJSONObject:dict]) {

    NSError *error;

    NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];

    NSString *resultStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

    return resultStr;

    }else{

    return nil;

    }

    }

    相关文章

      网友评论

          本文标题:iOS JSON解析之NSJSONSerialization

          本文链接:https://www.haomeiwen.com/subject/kxxszttx.html