是否有可以与所有JSON解析器和数据库使用JSON的安全的子集
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文档中使用的特殊构造?
通常,号
当然,也有相当多的错误(MongoDB的,例如,给出了String Parse Error
上数大于64位unsingned INT)。其中一些是错误,而另一些则是固有的平台限制 - 与其他任何非平凡的计算机系统一样。
但是定义JSON的“安全子集”我一般不相信会发生。虽然你可以得到JSON schemas,但让全世界的每个人都同意这样做并不会发生。
我广义来说,JSON很流行因为它没有固有的限制。 (与例如ASN.1或XML相反)