数组可以是顶级JSON文本吗?

时间:2010-09-30 17:42:37

标签: arrays json rfc4627

根据这篇文章的辩论:json-conversion-in-javascript

5 个答案:

答案 0 :(得分:101)

是的,数组是合法的顶级JSON文本。

定义JSON有三个标准文档:RFC 4627RFC 7159(废弃RFC 4627)和ECMA-404。它们允许的顶级元素不同,但都允许将对象或数组作为顶级元素。

  • RFC 4627:对象或数组。
    “JSON文本是序列化对象或数组。”
  • RFC 7159:任何JSON值。
    “JSON文本是序列化值。”
  • ECMA-404:任何JSON值。
    “JSON文本是由符合JSON值的Unicode代码点组成的一系列令牌 语法“。

答案 1 :(得分:47)

,但由于JSON hijacking,您应该考虑在某些情况下将根目标设为对象。这是一个基于覆盖JavaScript中的数组构造函数的信息泄露漏洞。

答案 2 :(得分:4)

这来自ECMAScript规范。

JSONText :
    JSONValue

JSONValue :
    JSONNullLiteral 
    JSONBooleanLiteral 
    JSONObject 
    JSONArray 
    JSONString 
    JSONNumber

答案 3 :(得分:1)

是的,请在这里试试。

http://www.jsonlint.com/

并输入[{}]

答案 4 :(得分:1)

在其他评论中看到了一些混乱。每个JSON RFC,“application / json”媒体类型只允许顶层的对象或数组用于JSON文本。但是,对于解析器,任何JSON值都是可接受的,如ECMAScript规范中所示。