【发布时间】:2010-11-11 01:11:51
【问题描述】:
json 字符串中是否忽略空格、制表符和回车等空白字符?
例如,{"a":"b"} 是否等于 {"a" : "b"}?
【问题讨论】:
-
空格在技术上不是空白字符
-
从技术上讲,您的大脑应该将“空白”解析为“空白”
标签: json
json 字符串中是否忽略空格、制表符和回车等空白字符?
例如,{"a":"b"} 是否等于 {"a" : "b"}?
【问题讨论】:
标签: json
是的,双引号字符串文字之外的空格在语法中会被忽略。具体来说,RFC 4627 中 JSON 语法中的ws 产生式显示:
Insignificant whitespace is allowed before or after any of the six structural characters. ws = *( %x20 / ; Space %x09 / ; Horizontal tab %x0A / ; Line feed or New line %x0D ; Carriage return )
【讨论】:
如前所述,在标准 JSON 中,字符串文字之外的空格会被忽略。
但是,由于您的问题被标记为 C#,我应该注意,在 C#/.NET 中至少还有另一种情况,其中 JSON 中的空格确实很重要。
DataContractJsonSerializer 使用特殊的__type 属性来支持反序列化到正确的子类。此属性必须是对象中的第一个属性,并且在属性名称和前面的 { 之间不能有空格。请参阅上一个线程:
DataContractJsonSerializer doesn't work with formatted JSON?
至少,我已经测试过,从 .NET 4 开始,无空白要求是正确的。也许这会在未来的版本中进行更改,以使其更符合 JSON 标准?
【讨论】: