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

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

2016-05-12 17:36 615 查看
在一次项目中,需要将数组作为字典的value上传给后台,查询发现,数组是不能直接作为value上传给后台的,需要将数组转化为json串才可以。顺便就查询总结了下字典,数组和json之间的相互转化。

一.将字典或者数组转化为json串

- (NSData *)toJSONData:(id)theData{

NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData
options:NSJSONWritingPrettyPrinted error:&error];

if ([jsonData length] > 0 && error == nil){
return jsonData;
}else{
return nil;
}
}

NSString *jsonString = [[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding];


使用例子:

//数组转为json串
NSData *jsonData = [self toJSONData:array];

NSString *jsonString = [[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding];


- (NSData *)toJSONData:(id)theData{

NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData
options:NSJSONWritingPrettyPrinted
error:&error];

if ([jsonData length] > 0 && error == nil){
return jsonData;
}else{
return nil;
}
}


二.将json转为数组或者字典

[jsonString dataUsingEncoding:NSASCIIStringEncoding];
// 将JSON串转化为字典或者数组
- (id)toArrayOrNSDictionary:(NSData *)jsonData{
NSError *error = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingAllowFragments
error:&error];

if (jsonObject != nil && error == nil){
return jsonObject;
}else{
// 解析错误
return nil;
}
}


使用例子:

//json转数组
NSData *data90 = [jsonString dataUsingEncoding:NSASCIIStringEncoding];
NSArray *arr = [self toArrayOrNSDictionary:data90];


- (id)toArrayOrNSDictionary:(NSData *)jsonData{
NSError *error = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingAllowFragments
error:&error];

if (jsonObject != nil && error == nil){
return jsonObject;
}else{
// 解析错误
return nil;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: