我使用以下行将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
以外还有其他选项吗?
答案 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);