NSJSONSerialization将\ n添加到JSON字符串的开头和结尾

时间:2015-03-24 18:15:09

标签: ios objective-c json nsjsonserialization

我有一个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"]

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的方法?现在去查看写入选项,看看哪个写入选项与您传递的读取选项具有完全相同的值。