数组可以是顶级的JSON文本吗?
每个在这篇文章的辩论: json-conversion-in-javascript
是的,数组是合法的顶级JSON文本。
有三个定义JSON的标准文档: RFC 4627 , RFC 7159 (废弃RFC 4627)和ECMA-404 。 它们的区别在于它们允许的顶层元素,但都允许一个对象或数组作为顶层元素。
- RFC 4627: 对象或数组。
“JSON文本是序列化的对象或数组”。 - RFC 7159: 任何JSON值。
“JSON文本是一个序列化的值。” - ECMA-404: 任何JSON值。
“JSON文本是由符合JSON值语法的Unicode代码点组成的一系列令牌。”
是的 ,但是由于JSON劫持 ,您应该考虑在某些情况下将根设为对象。 这是基于重写JavaScript中的数组构造函数的信息泄露漏洞。
这是来自ECMAScript规范。
JSON文本: JSONValue JSON值: JSONNullLiteral JSONBooleanLiteral 的JSONObject JSONArray JSONString JSONNumber
在其他意见中有一些混淆。 根据JSON RFC ,“application / json”媒体types只允许JSON文本顶层的对象或数组。 但是,对于parsing器,任何JSON值都可以接受,如ECMAScript规范中所示。