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/