iOS  SBJson解析,拼接的用法

来源:互联网 发布:淘宝店信用等级 编辑:程序博客网 时间:2024/04/28 11:02
1.ios解析json 
使用开源json包,项目地址: 
     http://stig.github.com/json-framework/ 
NSData * responseData = [responesresponseData]; 
      
    NSString * strResponser = [[NSString alloc]initWithData:responseDataencoding:NSUTF8StringEncoding]; 
SBJsonParser * parser = [[SBJsonParseralloc]init]; 
    NSMutableDictionary *dicMessageInfo = [parserobjectWithString:strResponser]; //解析成json解析对象 
[parser release]; 
    //发送者 
    NSString * sender = [dicMessageInfoobjectForKey:@"sender"]; 

2.json嵌套对象解析: 
//要上传的字符串 
    NSString*dataStr=[[NSString alloc]initWithString:@"{"cross":{"1":"true","2":"false","3":"true"}}"]; 
//获取响应返回字符串 
NSData * responseData = [responesresponseData]; 
        
       NSString * strResponser = [[NSString alloc]initWithData:responseDataencoding:NSUTF8StringEncoding]; 
//嵌套解析 
SBJsonParser * parser = [[SBJsonParseralloc]init]; 
            
           NSMutableDictionary *dicMessageInfo = [parserobjectWithString:strResponser]; //解析成json解析对象 
            
           NSMutableDictionary * cross = [dicMessageInfoobjectForKey:@"cross"]; 
            
           NSString *cross1= [crossobjectForKey:@"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 = [NSMutableStringstringWithCapacity:128]; 
    NSString*jsonString=nil; 
    SBJsonWriter*writer = [[SBJsonWriter alloc]init]; 
    [jsonappendString:@"{"data":{"]; 
    [jsonappendFormat:@""%@":"%d",",@"reset",reset]; 
   if(missionStatus!=NULL) 
   
       jsonString=[writerstringWithObject:status]; 
       if(jsonString!=NULL) 
       
           [jsonappendString:@""status":"]; 
           [json appendString:jsonString]; 
       
   
    [jsonappendString:@"}}"]; 
    returnjson; 

4.利用多个NSDictionary,拼接多层嵌套的json字符串,减少因手工拼接忘记加引号导致的json格式错误 
示例代码: 
NSDictionary *dataDictionary= [NSDictionarydictionaryWithObjectsAndKeys:mac,@"mac", 
                                  game,@"game", 
                                  devicetoken,@"devicetoken", 
                                  device,@"device", 
                                  gv,@"gv", 
                                  lang,@"lang", 
                                  os,@"os", 
                                  hardware,@"hardware", 
                                  down,@"down",nil]; 
    NSDictionary*parmDictionary= [NSDictionarydictionaryWithObjectsAndKeys:@"getSession",@"act", 
                                  dataDictionary,@"data",nil]; 
    NSDictionary*jsonDictionary=[NSDictionarydictionaryWithObjectsAndKeys:pv,@"pv", 
                                 parmDictionary,@"param",nil]; 
    SBJsonWriter*writer = [[SBJsonWriter alloc]init]; 
    
    NSString*jsonString=nil; 
   jsonString=[writerstringWithObject:jsonDictionary]; 
   NSLog(@"%@",jsonString); 
5.json字符串在线校验网址: 
http://jsonlint.com/