2010-11-11 45 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