根据这篇文章中的辩论:json-conversion-in-javascript
问问题
68176 次
5 回答
144
是的,数组作为顶级 JSON 文本是合法的。
定义 JSON 的标准文档有四个:RFC 4627、RFC 7159(废弃 RFC 4627)、ECMA-404和RFC 8259(废弃 RFC 7159,并称为 ECMA-404 规范)。它们在允许的顶级元素上有所不同,但都允许将对象或数组作为顶级元素。
- RFC 4627:对象或数组。
“JSON 文本是一个序列化的对象或数组。” - RFC 7159、RFC8259:任何 JSON 值。
“JSON 文本是一个序列化值。请注意,某些先前的 JSON 规范将 JSON 文本限制为对象或数组。” 第 2 节 - ECMA-404:任何 JSON 值。
“JSON 文本是由符合 JSON 值语法的 Unicode 代码点形成的标记序列。”
于 2010-09-30T17:44:06.753 回答
67
是的,但由于JSON 劫持,您应该考虑在某些情况下将根设为对象。这是一个基于在 JavaScript 中重写数组构造函数的信息泄露漏洞。
于 2010-09-30T17:56:50.493 回答
5
这是来自 ECMAScript 规范。
JSON文本: JSON值 JSON值: JSONNullLiteral JSONBooleanLiteral JSON对象 JSON数组 JSON字符串 JSON数字
于 2010-09-30T17:45:18.933 回答
2
是的,你可以做到。投放[{}]
于 2010-09-30T17:45:12.523 回答
2
在其他评论中看到了一些混乱。根据JSON RFC,“application/json”媒体类型仅允许 JSON 文本的顶层对象或数组。但是,对于解析器,任何 JSON 值都是可接受的,如 ECMAScript 规范中所见。
更新:RFC 4627 已过时。新的 RFC 还允许顶层的简单值。(谢谢,Matthias Dieter Wallnöfer。)
于 2012-06-21T21:38:41.983 回答