sbjson数据的生成和解析
Json是一种类似XML的数据传输方式。已经是一种普遍使用的网络传输格式。
以下是我使用json的总结。
经常会用到json在序列化和反序列。不多说,用例子说明一切。
1.把json数据解析成通用数据的实例:
id jsonObject = [jsonString JSONValue];
通过判断jsonObject在类型解析数据。
2.把数据组织成jason数据的实例:
通过观察json数据的组织方式,可以理解json数据的解析方式。
{"age":30,"name":"xcode","num":["first","second","third"]} //json 数据
NSMutableDictionary *jsonDic = [NSMutableDictionarydictionaryWithCapacity:4];
NSNumber *age = [NSNumber numberWithInt:30];
NSArray *aArray = [NSArray arrayWithObjects:@"first", @"second", @"third", nil];
[jsonDic setObject:@"xcode" forKey:@"name"];
[jsonDic setObject:age forKey:@"age"];
[jsonDic setObject:aArray forKey:@"num"];
SBJsonWriter *jsonWriter = [[SBJsonWriter alloc] init];
NSString *jsonStr = [jsonWriter stringWithObject:jsonDic];
NSData *jsonData = [jsonWriter dataWithObject:jsonDic];
注:json内容被SBJson转换为Objective-C的类型的方式如下:
Null -> NSNull String -> NSMutableString Array -> NSMutableArray Object -> NSMutableDictionary Boolean -> NSNumber Number -> NSDecimalNumber |
重要: 上面的转换指向,可以直观地这样理解:
{"age":30,"name":"xcode","num":["first","second","third"]}
30 是number 转换后会变成NSDecimalNumber
xcode 是String 转换后会变成NSMutableString
["first","second","third"] 是Array 转换后会变成 NSMutableArray 即 key "num" 对应的对象就是一个数组。而这个数据就包含了上面的内容。