除NSJSONWritingPrettyPrinted之外的其他选项?

时间:2014-12-01 03:36:50

标签: ios nsjsonserialization

我使用以下行将NSDictionary转换为JSON NSData

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:answers 
                                                   options:NSJSONWritingPrettyPrinted 
                                                     error:&err];

并将其传递给服务器端,这是一个PHP脚本。该脚本将JSON字符串读取为:

{
  "A" : "1941",
  "D" : "1699",
  "B" : "1949",
  "E" : "1823",
  "C" : "1999"
}

如何将JSON字符串格式化为1行,如下所示?

{"A" : "1941", "D" : "1699", "B" : "1949", "E" : "1823", "C" : "1999"}

NSJSONWritingPrettyPrinted以外还有其他选项吗?

2 个答案:

答案 0 :(得分:9)

Quoth the documentation for NSJSONWritingPrettyPrinted;

  

如果未设置此选项,则会生成最紧凑的可能JSON表示。

如果您不想在写入选项掩码中设置任何位,只需为该参数传递零。 (或者在Swift中,一个空的选项集,看起来就像一个空数组:[]。)

答案 1 :(得分:4)

除了调试之外,不应将NSJSONWritingPrettyPrinted用于其他目的。您可以传递options:0(见下文)以获得缩小的JSON。

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:answers options:0 error:&err];

要验证这一点,您可以将其转换为字符串NSLog

NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

NSJSONWritingPrettyPrinted以外没有其他选项:

typedef NS_OPTIONS(NSUInteger, NSJSONWritingOptions) {
    NSJSONWritingPrettyPrinted = (1UL << 0)
} NS_ENUM_AVAILABLE(10_7, 5_0);