我有一个iOS应用程序需要以json格式向服务器发布一些信息。特别是,我需要选择一个NSArray的字符串并将其转换为json格式的NSString。我使用以下代码创建字符串:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:_selectedStyles options:NSJSONReadingMutableContainers error:&error];
if(error){
//TODO: handle error
}
NSString *selectedStylesInJson = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
但是,由此产生的字符串如下:
@"[\n \"schlager\",\n \"volkstuemlicherSchlager\"\n]"
如您所见,NSJSONSerialization方法在数组中的每个字符串之前和之后插入\ n,这是不正确的。
如何让iOS以正确的格式转换此数组?我正在寻找的格式是:
["object 1", "object 2"]
答案 0 :(得分:2)
使用
[NSJSONSerialization dataWithJSONObject:self options:0 error:nil];
[NSJSONSerialization dataWithJSONObject:self options:kNilOptions
error:nil];
如果未设置该选项,将生成最紧凑的可能JSON。如果发生错误,将设置error参数,返回值为nil。结果数据以UTF-8编码。
来自Apple Document。
答案 1 :(得分:1)
首先,输出绝对正确。可以在正确的位置添加JSON中的空格和换行符。 JSON解析器将能够解析它。
为什么会这样?因为你在你的cde中完全粗心。查看您传递的选项。它是在解析JSON时使用的选项,而不是在编写JSON时使用的选项。为什么要将读取JSON的选项传递给编写JSON的方法?现在去查看写入选项,看看哪个写入选项与您传递的读取选项具有完全相同的值。