Json解析

网络中数据的传输往往是以Json或XML格式进行的,如新浪微博、腾讯微博、人人网等。今天主要介绍一下ios下Json数据的解析。

首先是使用TouchJson进行解析:

TouchJson点击下载

首先导入

将Source文件加下的所以文件导入工程,在合适的位置添加CJSONDeserializer.h头文件

代码:

01 NSString *jsonStr = <pclass="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p>; 
02     NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding]; 
03     NSError *error; 
04     NSMutableDictionary *root = [[CJSONDeserializer deserializer] deserialize:jsonData error:&error]; 
05     NSLog(@"Customers:%@", root); 
06     NSMutableArray *customers = [root objectForKey:@"customer"]; 
07     NSString *jsonTextStr = @"姓名:\n"
08     for (NSMutableDictionary *customer in customers) { 
09         NSString *name = [customer objectForKey:@"name"]; 
10         name = [name stringByAppendingString:@"\n"]; 
11         jsonTextStr = [jsonTextStr stringByAppendingString:name]; 
12         NSLog(@"customer:%@",[customer objectForKey:@"name"]); 
13     }
输出结果:
01 Customers:{ 
02     customer =     ( 
03                 
04             name = roamer; 
05             sumcount = "322.3"; 
06             ycount = "232.4"; 
07         }, 
08                 
09             name = "\U738b\U4e09"; 
10             sumcount = "1123.2"; 
11             ycount = "221.2"; 
12         }, 
13                 
14             name = "\U674e\U56db"; 
15             sumcount = "12123.2"; 
16             ycount = "1221.2"; 
17         
18     ); 
19
20 2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:roamer 
21 2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:王三 
22 2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:李四
下面使用SBJson

SBJson下载
首先导入

将Classes文件加下的所以文件导入工程,在合适的位置添加SBJson.h头文件

代码:

01 //解析数据 
02     SBJsonParser *parser = [[SBJsonParser alloc] init]; 
03     NSString *jsonStr = <pclass="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p> 
04     NSError *error = nil; 
05     NSMutableDictionary *root = [[NSMutableDictionary alloc] initWithDictionary:[parser objectWithString:jsonStr error:&error]]; 
06     //转换代码 不然会带来中文问题,诸如加()、:变成 = 等乱码问题 
07     SBJsonWriter *jsonWrite = [[SBJsonWriter alloc] init]; 
08     NSString *jsonString = [jsonWrite stringWithObject:root]; 
09     NSLog(@"JsonString:%@", jsonString); 
10     [jsonWrite release]; 
11     NSMutableArray *customers = [root objectForKey:@"customer"]; 
12     NSLog(@"Customers:%@", customers); 
13        
14     for (NSMutableDictionary *customer in customers) { 
15         NSLog(@"Customer-name:%@", [customer objectForKey:@"name"]); 
16     
17     [self.jsonData setText:@"解析完成"]; 
18     [self.parseBtn setTitle:@"Done" forState:UIControlStateNormal];
使用TouchJson和SBJson都可以快速的完成Json数据的解析,两者使用起来都比较简单,但TouchJson性能更好一些推荐使用。
转自:http://blog.youkuaiyun.com/shang_515/article/details/7666261


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值