您的位置:首页 > Web前端 > JavaScript

NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化

2015-09-16 02:12 776 查看


在iOS 5 中,苹果引入了一个解析JSON串的NSJSONSerialization类。通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化。以前,我记得我用的是第三方的插件。但是,苹果出了这套解析后,效率也大大了超过了,所有的解析第三方类库。所以,推荐使用NSJSONSerialization类来完成转化。一、将NSDictionary或NSArray转化为JSON串// 将字典或者数组转化为JSON串- (NSData *)toJSONData:(id)theData{NSError *error = nil;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theDataoptions:NSJSONWritingPrettyPrintederror:&error];if ([jsonData length] > 0 &&
error == nil){return jsonData;}else{return nil;}}使用这个方法的返回,我们就可以得到想要的JSON串NSString *jsonString = [[NSString alloc] initWithData:jsonDataencoding:NSUTF8StringEncoding];二、将JSON串转化为NSDictionary或NSArray将NSString转化为NSData[jsonString dataUsingEncoding:NSASCIIStringEncoding];// 将JSON串转化为字典或者数组- (id)toArrayOrNSDictionary:(NSData *)jsonData{NSError *error = nil;id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonDataoptions:NSJSONReadingAllowFragmentserror:&error];if (jsonObject != nil && error == nil){return jsonObject;}else{// 解析错误return nil;}}三、将JSON串与NSArray和NSDictionary的操作进行封装当然,也有很多时候,我们将这些操作,分别定义在NSObject和NSString的一个分类中直接贴:1.将NSString转化为NSArray或者NSDictionary#import "NSString+JSONCategories.h"@implementation NSString(JSONCategories)-(id)JSONValue;{NSData*
data = [self dataUsingEncoding:NSUTF8StringEncoding];__autoreleasing NSError*
error = nil;id result
= [NSJSONSerialization JSONObjectWithData:data options:kNilOptions
error:&error];if (error != nil) return nil;return result;}@end2.将NSArray或者NSDictionary转化为NSString#import "NSObject+JSONCategories.h"@implementation NSObject (JSONCategories)-(NSData*)JSONString;{NSError* error = nil;id result
= [NSJSONSerialization dataWithJSONObject:selfoptions:kNilOptionserror:&error];if (error != nil) return nil;return result;}@end顺便提加一下 这个JSON格式就是1、对象是一个无序的“‘名称/值’对”集合。

(1)一个对象以“{”(左括号)开始,“}”(右括号)结束。(2)每个“名称”后跟一个“:”(冒号);(3)“‘名称/值’ 对”之间使用“,”(逗号)分隔。(如图所示,图中表示数据的方式是类似非确定性自动机的形式,没学过编译原理的人,可能理解起来困难点,实际上也是正则表达式的形式。下同)例子:表示人的一个对象:
2、数组是值(value)的有序集合。(1)一个数组以“[”(左中括号)开始,“]”(右中括号)结束。(2)值之间使用“,”(逗号)分隔。例子:一组学生
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: