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

前端之家收集整理的这篇文章主要介绍了NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化++++++++++++前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

// 所有的网络请求,均有manager发起

//需要注意的是,默认提交请求的数据是二进制的,返回格式是JSON

/*

AFHTTPRequestSerializer 二进制格式

AFJSONRequestSerializer JSON

AFPropertyListRequestSerializer PList(是一种特殊的XML,解析起来相对容易)

*/

//responseSerializer 接收数据类型

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

//如果报接受类型不一致请替换一致text/html或别的

//post 请求

//operation请求的数据?responseString返回的字符串?

[manager POST:GET_POST_INFO_URL parameters:nil success:^(AFHTTPRequestOperation *operation,id responSEObject) {

NSLog(@"Success:%@",responSEObject);

NSString* requestString=[NSString stringWithString:operation.responseString];

NSData* data=[[NSData alloc] initWithData:[requestString dataUsingEncoding:NSUTF8StringEncoding]];//返回的字符串转换成date

NSDictionary* jsonDict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];//解析jsonnsdictionary类型 数据会放在内存中

[data release];

_dataArray=[jsonDict objectForKey:@"data"];

FangYuanViewController* fangYuan=[[FangYuanViewController alloc] initWithNibName:@"FangYuanViewController" bundle:nil];

fangYuan.dataArray=[[[NSMutableArray alloc] init] autorelease];

fangYuan.dataArray=_dataArray;

[self addChildViewController:fangYuan];

[self.view addSubview:fangYuan.view];

[fangYuan didMoveToParentViewController:self];

[fangYuan release];

[ProgressHUD showSuccess:@"加载成功"];

NSLog(@"拿到房源数据成功");

} failure:^(AFHTTPRequestOperation *operation,NSError *error) {

[ProgressHUD showError:@"加载失败,请检查网路!"];

}];


++++
NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化(转)
http://blog.sina.com.cn/s/blog_7b9d64af0101ce92.html
http://blog.sina.com.cn/s/blog_9564cb6e0101wc6f.html
在iOS 5 中,苹果引入了一个解析JSON串的 NSJSONSerialization类。
通过该类,我们可以完成JSON数据与 NSDictionaryNSArray之间的转化。

以前,我记得我用的是第三方的插件。但是,苹果出了这套解析后,效率也大大了超过了,所有的解析第三方类库。所以,推荐使用 NSJSONSerialization类来完成转化。
一、将NSDictionaryNSArray转化为JSON串

@H_820_403@//将字典或者数组转化为@H_820_403@JSON串

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

NSError*error =nil;

NSData*jsonData = [NSJSONSerializationdataWithJSONObject:theData

options:NSJSONWritingPrettyPrinted

error:&error];

if([jsonDatalength] >0&& error ==nil){

returnjsonData;

}else{

returnnil;

}

}

使用这个方法的返回,我们就可以得到想要的JSON串

NSString*jsonString = [[NSStringalloc]initWithData:jsonData

encoding:NSUTF8StringEncoding];

二、将JSON串转化为NSDictionaryNSArray
NSString转化为 NSData

[jsonStringdataUsingEncoding:NSASCIIStringEncoding];


@H_820_403@//将@H_820_403@JSON串转化为字典或者数组

- (id)toArrayOrNSDictionary:(NSData*)jsonData{

nil;

idjsonObject = [JSONObjectWithData:jsonData

NSJSONReadingAllowFragments

if(jsonObject !=nil&& error ==returnjsonObject;

}else{

//解析错误

nil;

}


}

三、将JSON串与NSArray和NSDictionary的操作进行封装
当然,也有很多时候,我们将这些操作,分别定义在 NSObject和NSString的一个分类
直接贴:
1.将NSString转化为NSArray或者NSDictionary

#import"NSString+JSONCategories.h"


@implementationNSString(JSONCategories)


-(id)JSONValue;

{

NSData* data = [selfdataUsingEncoding:NSUTF8StringEncoding];

__autoreleasingNSError* error =nil;

idresult = [NSJSONSerializationJSONObjectWithData:dataoptions:kNilOptions error:&error];

if(error !=nil)returnresult;

}

@end

2.将NSArray或者NSDictionary转化为NSString
#import"NSObject+JSONCategories.h"


@implementationNSObject (JSONCategories)


-(NSData*)JSONString;

{

NSError* error =nil;

result = [NSJSONSerializationdataWithJSONObject:self

kNilOptionserror:&error];

希望对你有所帮助!

猜你在找的Json相关文章