• ios 使用json


    1、从https://github.com/stig/json-framework/中下载json框架:json-framework

    2、解压下载的包,将class文件夹下的所有文件导入到当前工程下。

    3、在使用的文件中加入导入语句 :#import "SBJson.h"

    4、将json字符串转为NSDictionary对象

    [cpp]  view plain copy

    //测试json的解析  
    -(void)testJsonParser: (NSString *) jsonString  
    {  
        jsonString = [[NSString alloc] initWithString:@"{"userInfo":{"userName":"张三","sex":"男"}}"];  
        NSLog(@"正在解析json字符串是:%@",jsonString);  
          
        SBJsonParser * parser = [[SBJsonParser alloc] init];  
        NSError * error = nil;  
        NSMutableDictionary *jsonDic = [parser objectWithString:jsonString error:&error];  
        NSMutableDictionary * dicUserInfo = [jsonDic objectForKey:@"userInfo"];  
          
        NSLog(@"%@",[jsonDic objectForKey:@"userInfo" ]);  
        NSLog(@"%@",[dicUserInfo objectForKey:@"userName"]);  
        NSLog(@"%@",[dicUserInfo objectForKey:@"sex"]);  
    }  

    5、 处理json对象有多个记录的方法

    [cpp]  view plain copy

            NSString * customerGridJsonString = [[NSString alloc]initWithString:@"{"customer":[{"name":"roamer","ycount":"232.4","sumcount":"322.3"},{"name":"王三","ycount":"221.2","sumcount":"1123.2"},{"name":"李四","ycount":"1221.2","sumcount":"12123.2"}]}"];  
              
            SBJsonParser * parser = [[SBJsonParser alloc] init];  
    //        NSLog(@"%@",customerGridJsonString);  
            NSError * error = nil;  
              
            NSMutableDictionary *root = [[NSMutableDictionary alloc] initWithDictionary:[parser objectWithString:customerGridJsonString error:&error]];  
            NSLog(@"%@",root);  
            //注意转换代码  
            SBJsonWriter *jsonWriter = [[SBJsonWriter alloc] init];  
              
            NSString *jsonString = [jsonWriter stringWithObject:root];  
              
            [jsonWriter release];  
            NSLog(@"%@",jsonString);  
            //注意转换代码  
            NSMutableArray * customers = [root objectForKey:@"customer"];  
            NSLog(@"%@",customers);  http://www.huiyi8.com/moban/
            for(NSMutableDictionary * member  in customers)  
            {  
                NSLog(@"%@",[[member objectForKey:@"name"] description]);  
            }  

    6、递归遍历解析出的NSDictionary对象

    [cpp]  view plain copy

    -(void)visitDict:(NSDictionary *)dict{    
      NSArray *keys=[dict allKeys];    
      for (NSString *key in keys) {    
         NSString *result=[NSString stringWithFormat:@"key=%@,value=%@",key,[dict objectForKey:key]];    
         NSLog(result);    
         if([[dict objectForKey:key] isKindOfClass:[NSDictionary class]]){    
                [self visitDict:[dict objectForKey:key]];    
         }    
       }    
    }    
    7、将解析出的NSDictionary对象还原为json字符串 
    [cpp]  view plain copy网站模板

    NSString * jsonStr=[items JSONRepresentation];  

  • 相关阅读:
    2016-12-7
    使用netty4.x客户端接收较大数据量报文时发生的读取不完整bug修复记录
    AngularJS
    使用Netty收发二进制报文问题记
    如何在Linux中查看所有正在运行的进程
    面试连环炮系列(十四): HTTP状态码302的跳转逻辑
    算法天天练1:计算最长子串
    面试连环炮系列(十三):实现一个线程有几种方法
    面试连环炮系列(十二):说说Atomiclnteger的使用场景
    面试连环炮系列(十一):说说你们的分布式ID设计方案
  • 原文地址:https://www.cnblogs.com/xkzy/p/3812000.html
Copyright © 2020-2023  润新知