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

首先是使用TouchJson进行解析:

TouchJson点击下载

首先导入

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

代码:

01

NSString *jsonStr = <p class="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 = <p class="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];

使用TouchJsonSBJson都可以快速的完成Json数据的解析,两者使用起来都比较简单,但TouchJson性能更好一些推荐使用。