美文网首页
JSON杂谈

JSON杂谈

作者: mkb2 | 来源:发表于2017-03-17 19:48 被阅读33次

    这几天一直有点疑惑NSJSONSerialization dataWithJSONObject:options:errer:方法,为什么疑惑?

    因为JSON的格式是这样的:

    {
    "name":"李小龙",
    "age":14
    }
    

    但是上边的确实NSDate和Objective-C的对象的转化,所以就蒙了;我一直以为是JSON和Objective-C的对象的转化,结果我理解错误了;

    几天和朋友一说,给了我一个源码,才一看,原来我们使用的NSJSONSerialization两个类方法都是NSDate和Objective-C的对象的转化~~~

    结论:苹果给的NSJSONSerialization这个命名没有那个准确不知道这麽说,会不会挨喷


    那么JSON和OC对象的转化到底是个什么顺序那?

    JSON ---> NSDate ----> OC对象
    JSON <--- NSDate <---- OC对象

    我们使用NSJSONSerialization两个类方法,其实并不是JSON(我自己感觉哈),因为NSDate和JSON之间还少一层。


    那么如何才能将OC对象和JSON字符串互相转化那?

    // 字典转换成Json字符串  
    NSDictionary * testDict = @{@"hid":@"1",  
                                @"cut_price":@"2",  
                                @"cut_num":@"3",  
                                @"goods_id":@"4",  
                                @"pool_id":@"5"};  
    NSError * error = nil;  
    NSData * jsonData = [NSJSONSerialization dataWithJSONObject:testDict options:NSJSONWritingPrettyPrinted error:&error];  
    NSString * jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];  
    

    将JSON字符串和OC转化

    // 将json字符串转换成字典  
    NSData * getJsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];  
    NSDictionary * getDict = [NSJSONSerialization JSONObjectWithData:getJsonData options:NSJSONReadingMutableContainers error:&error];
    

    序列化和反序列化

    序列化:将JSON转化成OC对象
    反序列化:将OC对象转化成JSON


    AFNetworking 的 response中有AFJSONResponser对象,这个最后获取的response就是一个转化好的字典了,可以直接使用,如果使用的是AFHTTPResponser那么获取的实际是二进制NDate,我们还是要通过JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error转化成字典才行~很麻烦;

    相关文章

      网友评论

          本文标题:JSON杂谈

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