2010-11-11 20 views
45

空格字符像空格,制表符和回车在json字符串中被忽略?JSON中的空白字符无关紧要吗?

例如,是{"a":"b"}等于{"a" : "b"}

+0

空格不是技术上空白的字符 – Falmarri 2010-11-11 01:18:36

+18

从技术上讲,你的大脑应该将空白解析为“空白” – mk12 2012-06-27 05:34:09

回答

55

是的,在双引号字符串文字之外的空格在语法中被忽略。具体而言,ws产量JSON语法RFC 4627所示:

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 
     ) 
+0

谢谢。我读过RFC,但不确定这是什么类型的语法表示语言 - 具体来说,这是什么意思。 – nomen 2013-09-14 19:39:18

+1

* =零或更多(来自正则表达式表示法) – kevinarpe 2014-12-28 11:42:05

+0

嵌入数值的空格如何:{“a”:12}相当于{“a”:1 2}我解释定义“不允许之前允许的空白或在六个结构字符中的任何一个之后“暗示数字或日期值内不允许有空格 – aeropapa17 2017-12-02 21:39:27

3

在标准的JSON,字符串以外的空白被忽略,如已经说。

但是,因为你的问题被标记为C#,所以我应该注意在C#/ .NET中至少有一个其他情况,JSON中的空白是很重要的。

DataContractJsonSerializer使用特殊的__type属性来支持反序列化到正确的子类。该属性必须是对象中的第一个属性,并且在属性名称和前面的{之间没有空格。看到这个前面的线程: DataContractJsonSerializer doesn't work with formatted JSON?

至少,我已经测试,无空白要求是真实的,因为.NET 4。也许这将在未来的版本中更改,以使其更符合JSON标准?

+0

危险,威尔罗宾逊! – wprl 2014-01-29 17:28:29