2010-07-26 48 views
2

JSON仍然變得越來越重要數據的交換,但JSON specification是在某些方面比較鬆:是否有可以與所有JSON解析器和數據庫使用JSON的安全的子集

名稱在一個對象內應該是唯一的。

實施可能會限制它接受的文本大小。實施可能會限制嵌套的最大深度。實施可能會限制數字的範圍。 實現可以對字符串的長度和字符內容設置限制。

我認爲,大多數JSON解析器忽略重複的對象鍵,不區分負零(-0)和零。大多數也可能將數字限制爲32位浮點數或有符號整數。此外,允許JSON包含不是有效的Unicode代碼點的字符(請參見this question)。我敢打賭,在基本多語言平面(U + 0000到U + FFFF)之上的Unicode字符可能會遇到問題。但不是JSON規範,像CouchDB,MongoDB,Persevere/Dojo等JSON數據庫增加了限制:我懷疑你可以在所有JSON商店中使用對象密鑰,如id,_id$ref,因爲它們在每個商店中可能都有特殊含義系統。

這在某種程度上令人沮喪:JSON應該很容易,但越接近你看到的障礙越多。是否有一個可以在所有解析器和數據庫中安全使用的JSON子集(不是太限制),還是NoSQL移動添加more and more extensions以及不應在JSON文檔中使用的特殊構造?

回答

1

通常,號

當然,也有相當多的錯誤(MongoDB的,例如,給出了String Parse Error上數大於64位unsingned INT)。其中一些是錯誤,而另一些則是固有的平臺限制 - 與其他任何非平凡的計算機系統一樣。

但是定義JSON的「安全子集」我一般不相信會發生。雖然你可以得到JSON schemas,但讓全世界的每個人都同意這樣做並不會發生。

我廣義來說,JSON很流行因爲它沒有固有的限制。 (與例如ASN.1或XML相反)

相關問題