您的位置:首页 > 移动开发 > IOS开发

ios 中使用SBJson拼接和解析json

2014-05-22 14:20 507 查看
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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: