在调用接口上传数据时,有时候需要将一个字典或一个数组转换成json串,并作为一个普通的参数.
使用NSJSONSerialization
对其进行转换:
NSDictionary *dic = @{@"appid":@"103905", @"tokenid":@"1", @"version":@"1", @"sign":@"1"};
NSData *JSONData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
NSString *str = [[NSString alloc] initWithData:JSONData encoding:NSUTF8StringEncoding];
大多数情况下,我们都是按照以上方法转换.但是我发现 转换后的字符串中有\n
符号.这导致了参数数据设置不成功.
@"{\n \"tokenid\" : \"1\",\n \"appid\" : \"103905\",\n \"sign\" : \"1\",\n \"version\" : \"1\"\n}"
经过尝试后发现,这是一个参数的设置问题:
`NSJSONWritingPrettyPrinted`
这个参数的意思是转换将字典装换成打印之后跟适合阅读的字符串,结果在字符串中添加了\n
符. 将这个参数成0,就不会再字符串中添加换行符了.
NSData *JSONData = [NSJSONSerialization dataWithJSONObject:dic options:0 error:nil];
参考文章
http://stackoverflow.com/questions/19314135/ios-runtime-use-case