博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios 中使用SBJson拼接和解析json
阅读量:5912 次
发布时间:2019-06-19

本文共 2632 字,大约阅读时间需要 8 分钟。

1.解析json 

使用开源json包,项目地址: 
      
NSData * responseData = [respones responseData]; 
      
     NSString * strResponser = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
SBJsonParser * parser = [[SBJsonParser alloc]init]; 
     NSMutableDictionary *dicMessageInfo = [parser objectWithString:strResponser]; // 解析成json解析对象 
[parser release]; 
     //发送者 
     NSString * sender = [dicMessageInfo objectForKey:@"sender"]; 
2.json嵌套对象解析: 
//要上传的字符串 
    NSString *dataStr=[[NSString alloc] initWithString:@"{\"cross\":{\"1\":\"true\",\"2\":\"false\",\"3\":\"true\"}}"]; 
//获取响应返回字符串 
NSData * responseData = [respones responseData]; 
        
        NSString * strResponser = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
//嵌套解析 
SBJsonParser * parser = [[SBJsonParser alloc]init]; 
            
            NSMutableDictionary *dicMessageInfo = [parser objectWithString:strResponser]; // 解析成json解析对象 
            
            NSMutableDictionary * cross = [dicMessageInfo objectForKey:@"cross"]; 
            
            NSString *cross1= [cross objectForKey:@"1"]; 
            //解析json到各个字符串 
            //发送者 
            [parser release]; 
            NSLog(@"cross1: %@",cross1); 
3.拼接json字符串 
通过使用SBJson中的SBJsonWriter类的方法- (NSString*)stringWithObject:(id)value可以将一个对象中的值格式化为json字符串,符合key/value格式的数据封装到NSDictionary后可以使用该方法进行格式化,其他数据通过拼接字符串的方式格式化。 
在拼接过程中可以使用类NSMutableString的方法: 
- (void)appendString:(NSString *)aString;、 
- (void)appendFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); 
动态添加字符串。 
拼接的字符串可通过json在线验证的方式验证其格式是否正确,网址为: 
 
-(NSString *) getJsonString 
{
 
    NSMutableString *json = [NSMutableString stringWithCapacity:128]; 
    NSString *jsonString=nil; 
    SBJsonWriter *writer = [[SBJsonWriter alloc] init]; 
    [json appendString:@"{\"data\":{"]; 
    [json appendFormat:@"\"%@\":\"%d\",",@"reset",reset]; 
    if(missionStatus!=NULL) 
    {
 
        jsonString=[writer stringWithObject:status]; 
        if(jsonString!=NULL) 
        {
 
            [json appendString:@"\"status\":"]; 
            [json appendString:jsonString]; 
        } 
    } 
    [json appendString:@"}}"]; 
    return json; 
} 
4.利用多个NSDictionary,拼接多层嵌套的json字符串,减少因手工拼接忘记加引号导致的json格式错误 
示例代码: 
NSDictionary *dataDictionary= [NSDictionary dictionaryWithObjectsAndKeys:mac,@"mac", 
                                   game,@"game", 
                                   devicetoken,@"devicetoken", 
                                   device,@"device", 
                                   gv,@"gv", 
                                   lang,@"lang", 
                                   os,@"os", 
                                   hardware,@"hardware", 
                                   down,@"down",nil]; 
    NSDictionary *parmDictionary= [NSDictionary dictionaryWithObjectsAndKeys:@"getSession",@"act", 
                                   dataDictionary,@"data",nil]; 
    NSDictionary *jsonDictionary=[NSDictionary dictionaryWithObjectsAndKeys:pv,@"pv", 
                                  parmDictionary,@"param",nil]; 
    SBJsonWriter *writer = [[SBJsonWriter alloc] init]; 
    
    NSString *jsonString=nil; 
    jsonString=[writer stringWithObject:jsonDictionary]; 
    NSLog(@"%@",jsonString); 
5.json字符串在线校验网址: 
http://jsonlint.com/

转载于:https://www.cnblogs.com/lovewx/p/3842567.html

你可能感兴趣的文章
Django的模板系统
查看>>
【总结整理】关于二手交易平台的讨论
查看>>
移动APP安全测试
查看>>
kvmgt-kernel 实现GPU虚拟化
查看>>
双斜线菜单
查看>>
5_添加购物车 B+M
查看>>
Python进阶07 函数对象【转】
查看>>
python 生成器 迭代器
查看>>
c#用牛顿法计算根号下2的值
查看>>
Java集合总结
查看>>
服务器发送数据到另一个服务器上中文出现乱码
查看>>
MySQL优化Explain命令简介(一)
查看>>
Excel导出纵向表格(poi)
查看>>
zeromq的几种模式(转)
查看>>
Linux 文件系统 的 学习
查看>>
学习日记(一)----BaseActivity的写法
查看>>
itunes 无法构建版本问题
查看>>
webpack
查看>>
0705作业
查看>>
如何在cowboy应用中指定mnesia数据库路径
查看>>