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

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

AFHTTPRequestOperationManager *manager = [@H_404_2@AFHTTPRequestOperationManager @H_404_2@manager@H_404_2@];@H_404_2@

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

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

/*@H_404_2@

AFHTTPRequestSerializer 二进制格式@H_404_2@

AFJSONRequestSerializer JSON

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

*/

@H_404_2@//responseSerializer 接收数据类型@H_404_2@

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

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

@H_404_2@//post 请求@H_404_2@

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

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

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

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

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

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

[data release@H_404_2@];

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

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

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

fangYuan.dataArray@H_404_2@=_dataArray@H_404_2@;

[self@H_404_2@ addChildViewController@H_404_2@:fangYuan];

[self@H_404_2@.view@H_404_2@ addSubview@H_404_2@:fangYuan.view@H_404_2@];

[fangYuan @H_404_2@didMoveToParentViewController:@H_404_2@self@H_404_2@];@H_404_2@

[fangYuan release@H_404_2@];

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

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

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

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

}];


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

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

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

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

NSError@H_404_2@*error =nil@H_404_2@;

NSData@H_404_2@*jsonData = [NSJSONSerialization@H_404_2@dataWithJSONObject@H_404_2@:theData

options@H_404_2@:NSJSONWritingPrettyPrinted@H_404_2@

error@H_404_2@:&error];

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

return@H_404_2@jsonData;

}else@H_404_2@{

return@H_404_2@nil@H_404_2@;

}

}

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

NSString@H_404_2@*jsonString = [[NSString@H_404_2@alloc@H_404_2@]initWithData@H_404_2@:jsonData

encoding@H_404_2@:NSUTF8StringEncoding@H_404_2@];

二、将@H_404_2@JSON串@H_404_2@@H_404_2@转化为@H_404_2@NSDictionary@H_404_2@或NSArray@H_404_2@@H_404_2@
NSString@H_404_2@转化为 NSData@H_404_2@

[jsonString@H_404_2@dataUsingEncoding:@H_404_2@NSASCIIStringEncoding];@H_404_2@


@H_404_2@

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

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

nil@H_404_2@;

id@H_404_2@jsonObject = [JSONObjectWithData@H_404_2@:jsonData

NSJSONReadingAllowFragments@H_404_2@

if@H_404_2@(jsonObject !=nil@H_404_2@&& error ==return@H_404_2@jsonObject;

}else@H_404_2@{

//@H_404_2@解析错误@H_404_2@

nil@H_404_2@;

}


}

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

#import@H_404_2@"NSString+JSONCategories.h"


@implementation@H_404_2@NSString(JSONCategories)


-(id@H_404_2@)JSONValue;

{

@H_404_2@NSData@H_404_2@* data = [@H_404_2@self@H_404_2@dataUsingEncoding:@H_404_2@NSUTF8StringEncoding];@H_404_2@

@H_404_2@__autoreleasingNSError@H_404_2@* error =@H_404_2@nil;@H_404_2@

@H_404_2@id@H_404_2@result = [@H_404_2@NSJSONSerialization@H_404_2@JSONObjectWithData:data@H_404_2@options:@H_404_2@kNilOptions error:&error];@H_404_2@

if@H_404_2@(error !=nil@H_404_2@)return@H_404_2@result;

}

@end

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


@implementation@H_404_2@NSObject (JSONCategories)


-(NSData@H_404_2@*)JSONString;

{

NSError@H_404_2@* error =nil@H_404_2@;

result = [@H_404_2@NSJSONSerializationdataWithJSONObject@H_404_2@:@H_404_2@self@H_404_2@

kNilOptions@H_404_2@error@H_404_2@:&error];

希望对你有所帮助!

猜你在找的Json相关文章