SON是一种轻量级的数据格式,一般用于数据交互。目前JSON的使用非常广泛,绝大多数网络请求都采用了JSON格式。JSON的格式很像Objective-C中的字典和数组,标准JSON格式key必须用双引号包裹起来。
{"name":"九九学院”","site":"www.99ios.com"}
要想从JSON中获取其中的详细数据,则需要对JSON进行解析,即将JSON转换为Objective-C中的数据类型。JSON数据格式与Objective-C对象之间的参照如z所示。
参照表
对于JSON数据的解析既可以使用Foundation框架中提供的方法,也可以使用第三方框架。其中苹果官方提供了原生的解析JSON数据的方法——NSJSONSerialization。NSJSONSerialization类中提供了JSON与Objective-C对象之间相互转换的方法。
JSON数据转Objective-C对象,使用的是JSONObjectWithData:options:error:error方法。
+ (nullable id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
Objective-C对象转JSON数据,使用的是dataWithJSONObject:options:error:方法。
+ (nullable NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
另外,JSON的解析也可以使用第三方框架,常见的有JSONKit、SBJson等。需要特别说明的是,假如使用AFNeworking处理网络请求,该框架会自动解析JSON类型的网络响应数据。
JSON 和字符串之间的转换
有时候需要在JSON 和字符串之间进行相互转换,例如,在网络编程中,可以使用
字符串转JSON:
- (NSData*)dataUsingEncoding:(NSStringEncoding)encoding;
JSON转字符串:
-(id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding;
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",str);