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];//解析json为nsdictionary类型 数据会放在内存中
[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数据与
NSDictionary和
NSArray之间的转化。
以前,我记得我用的是第三方的
插件。但是,苹果出了这套解析后,效率也大大了超过了,所有的解析第三方类库。所以,推荐使用
NSJSONSerialization类来完成转化。
一、将NSDictionary或NSArray转化为JSON串
@H_276_403@//将字典或者数组转化为@H_276_403@JSON串
@H_
403_409@ - (
NSData*)toJSONData:(id)theData{
@H_403_409@ NSError*error =nil;
@H_403_409@ NSData*jsonData = [NSJSONSerializationdataWithJSONObject:theData
@H_403_409@ options:NSJSONWritingPrettyPrinted
@H_403_409@ error:&error];
@H_403_409@ if([jsonDatalength] >0&& error ==nil){
@H_403_409@ returnjsonData;
@H_403_409@ }else{
@H_403_409@ returnnil;
@H_403_409@ }
@H_403_409@ }
使用这个
方法的返回,我们就可以得到想要的JSON串
@H_
403_409@
NSString*jsonString = [[NSStringalloc]initWithData:jsonData
@H_403_409@ encoding:NSUTF8StringEncoding];
二、将JSON串转化为NSDictionary或NSArray
将
NSString转化为
NSData
[jsonStringdataUsingEncoding:NSASCIIStringEncoding];
@H_276_
403@//
将@H_276_403@JSON串转化为字典或者数组
@H_403_409@ - (id)toArrayOrNSDictionary:(NSData*)jsonData{
@H_403_409@ nil;
@H_403_409@ idjsonObject = [JSONObjectWithData:jsonData
@H_403_409@ NSJSONReadingAllowFragments
@H_403_409@ if(jsonObject !=nil&& error ==returnjsonObject;
@H_403_409@ }else{
@H_403_409@ //解析错误
@H_403_409@ nil;
@H_403_409@ }
@H_403_409@ }
三、将JSON串与NSArray和NSDictionary的操作进行封装
当然,也有很多时候,我们将这些操作,分别定义在
NSObject和NSString的一个
分类中
直接贴:
1.将NSString转化为NSArray或者NSDictionary
#import"NSString+JSONCategories.h"
@H_
403_409@
@implementationNSString(JSONCategories)
@H_403_409@ -(id)JSONValue;
@H_403_409@ {
NSData* data = [selfdataUsingEncoding:NSUTF8StringEncoding];
__autoreleasingNSError* error =nil;
idresult = [NSJSONSerializationJSONObjectWithData:dataoptions:kNilOptions error:&error];
@H_403_409@ if(error !=nil)returnresult;
@H_403_409@ }
@end
2.将NSArray或者NSDictionary转化为NSString
#import
"NSObject+JSONCategories.h"
@H_403_409@ @implementationNSObject (JSONCategories)
@H_403_409@ -(NSData*)JSONString;
@H_403_409@ {
@H_403_409@ NSError* error =nil;
result = [NSJSONSerializationdataWithJSONObject:self
@H_403_409@ kNilOptionserror:&error];
@H_403_409@
希望对你有所帮助!