zoukankan      html  css  js  c++  java
  • ios 中使用SBJson拼接和解析json

    1.ios解析json 
    使用开源json包,项目地址: 
         http://stig.github.com/json-framework/ 
    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在线验证的方式验证其格式是否正确,网址为: 
    http://jsonlint.com/ 
    -(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/

  • 相关阅读:
    总结:多校1
    简易数论练习
    2017 多校1
    简易数论函数变换学习
    petrozavodsk1
    Permutacja
    图片上传阿里云oss 数据存入redis List
    tp5实现月统计数据
    es6 新特性
    es6 新特性总结
  • 原文地址:https://www.cnblogs.com/lovewx/p/3842567.html
Copyright © 2011-2022 走看看