这几天一直有点疑惑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
转化成字典才行~很麻烦;