JSON

-(void)logout

{

    NSURL *url = [NSURLURLWithString:@"http://192.168.1.152/apple_ios/index.php?g=mobile&m=activity&a=get_near_new_activity"];

    //第二步,创建请求

    

    NSMutableURLRequest *request = [[NSMutableURLRequestalloc]initWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:10];

    

    [request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET

    

    NSString *str =@"type=focus-c";//设置参数

    

    NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];

    

    [requestsetHTTPBody:data];

    

    

    //第三步,连接服务器

    

    NSData *received = [NSURLConnectionsendSynchronousRequest:request returningResponse:nilerror:nil];

    

    NSString *str1 = [[NSStringalloc]initWithData:receivedencoding:NSUTF8StringEncoding];

   // NSLog(@"%@",str1);

    

    

    

    

    //TouchJson

   NSString *jsonStr =[[NSStringalloc]initWithString:str1 ];

    //NSLog(@"%@",jsonStr);

    

    //[[NSString alloc]initWithFormat:@"{\"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\"}]}"];

    NSData *jsonData = [jsonStrdataUsingEncoding:NSUTF8StringEncoding];

   NSError *error;

    


   NSMutableDictionary *root = [[CJSONDeserializerdeserializer] deserialize:jsonDataerror:&error];

    

   NSMutableArray *customers = [root objectForKey:@"data"];

   // NSString *jsonTextStr = @"姓名:\n";

   NSLog(@"Customers:%@", customers );

   

   

    //for (NSMutableDictionary *customer in customers) {

        //NSString *name = [customer objectForKey:@"name"];

       // name = [name stringByAppendingString:@"\n"];

       // jsonTextStr = [jsonTextStr stringByAppendingString:name];

       // NSLog(@"customer:%@",[customer objectForKey:@"name"]);

   // }

    

    

    

    

    

    //SBJson

//    SBJsonParser *parser = [[SBJsonParser alloc] init];

  // 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>

//    NSError *error = nil;

//    NSMutableDictionary *root = [[NSMutableDictionary alloc] initWithDictionary:[parser objectWithString:str1 error:&error]];

//    //转换代码不然会带来中文问题,诸如加()、:变成 =等乱码问题

//    SBJsonWriter *jsonWrite = [[SBJsonWriter alloc] init];

//    NSString *jsonString = [jsonWrite stringWithObject:root];

//    NSLog(@"JsonString:%@", jsonString);

//   // [jsonWrite release];

//    NSMutableArray *customers = [root objectForKey:@"id"];

//    NSLog(@"id:%@", customers);

//    

//    for (NSMutableDictionary *customer in customers) {

//        NSLog(@"Customer-name:%@", [customer objectForKey:@"userid"]);

//    }

   // [self.jsonData setText:@"解析完成"];

   // [self.parseBtn setTitle:@"Done" forState:UIControlStateNormal];

}




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

如果你还不了解什么是Json数据,请猛击

首先是使用TouchJson进行解析:

TouchJson点击下载

首先导入

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

代码:

[cpp]  view plain copy
  1. 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>;  
  2.     NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];  
  3.     NSError *error;  
  4.     NSMutableDictionary *root = [[CJSONDeserializer deserializer] deserialize:jsonData error:&error];  
  5.     NSLog(@"Customers:%@", root);  
  6.     NSMutableArray *customers = [root objectForKey:@"customer"];  
  7.     NSString *jsonTextStr = @"姓名:\n";  
  8.     for (NSMutableDictionary *customer in customers) {  
  9.         NSString *name = [customer objectForKey:@"name"];  
  10.         name = [name stringByAppendingString:@"\n"];  
  11.         jsonTextStr = [jsonTextStr stringByAppendingString:name];  
  12.         NSLog(@"customer:%@",[customer objectForKey:@"name"]);  
  13.     }  

输出结果:

[html]  view plain copy
  1. Customers:{  
  2.     customer =     (  
  3.                 {  
  4.             name = roamer;  
  5.             sumcount = "322.3";  
  6.             ycount = "232.4";  
  7.         },  
  8.                 {  
  9.             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头文件

代码:

[cpp]  view plain copy
  1. //解析数据  
  2.     SBJsonParser *parser = [[SBJsonParser alloc] init];  
  3.     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>  
  4.     NSError *error = nil;  
  5.     NSMutableDictionary *root = [[NSMutableDictionary alloc] initWithDictionary:[parser objectWithString:jsonStr error:&error]];  
  6.     //转换代码 不然会带来中文问题,诸如加()、:变成 = 等乱码问题  
  7.     SBJsonWriter *jsonWrite = [[SBJsonWriter alloc] init];  
  8.     NSString *jsonString = [jsonWrite stringWithObject:root];  
  9.     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性能更好一些推荐使用。

有问题请留言,大家一起交流学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值