2013-04-17 46 views

回答

9

這不是無效的JSON *。 Number是一個有效的JSON類型,就像對象一樣。 http://en.wikipedia.org/wiki/JSON#Data_types.2C_syntax_and_example任何這些類型都可以單獨出現,儘管對象和數組可能是最常見的頂級類型。

*根據Python實現

編輯:

如刪除(不知道爲什麼)回答指出,Python文檔表明,JSON RFC確實需要頂級對象是的數組或對象類型,但json模塊不強制執行此操作。由於我對JSON的許多瞭解來自於使用python json模塊,我不知道這種行爲的可移植性如何。

按照要求,這是在http://docs.python.org/2/library/json.html#standard-compliance注意:

該模塊不符合RFC遵守的嚴格的方式, 實施一些擴展是有效的JavaScript但不是有效的 JSON。特別是:

  • 頂層非對象,非數組值被接受並輸出;
  • 接受並輸出無限和NaN數值;
  • 接受對象中的重複名稱,只使用最後一個名稱 - 值對的值。
+0

的RFC僅適用於'應用/ json'媒體類型,這是唯一的可能的使用情況爲JSON的子集。 – Aya

+0

哎呀,所以我應該檢查isinstance(結果,字典)(或列表),如果我想驗證應用程序/ JSON數據。 – speg

+0

@speg:是的,這聽起來很合理。我在文檔中簡單探討了一下,看看你是否可以要求它對此嚴格,但我沒有看到任何明顯的方法來做到這一點,所以檢查你不想要的擴展名看起來是公平的。 – FatalError