JSON值是否有效JSON?

时间:2013-03-04 16:12:36

标签: json

JSON值是字符串,数字,真,假,空有效JSON吗? 即,

true

有效的JSON文档?或者必须是一个数组/对象?

有些验证者会接受此信息(例如http://jsonlint.com/),而有些则不接受(例如http://jsonschemalint.com/)。 RFC和json.org在这个问题上并不清楚。

2 个答案:

答案 0 :(得分:8)

截至2014年3月:From the specification

  

JSON文本是序列化值。注意某些先前的   JSON的规范将JSON文本约束为对象或   阵列。仅生成对象或数组的实现   调用的JSON文本在所有方面都是可互操作的   实现将接受这些作为符合JSON文本。

但是,在最初询问此问题时,答案是:否The original specification said

  

JSON文本是序列化对象或数组

因此,JSON文本中最外层的数据类型必须是对象或数组,它不能是字符串,布尔值,数字或任何其他数据类型。

答案 1 :(得分:0)

是的,根据ECMA-404 JSON数据交换标准。

来源:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf

  

JSON文本是由符合JSON值语法的Unicode代码点形成的令牌序列。

然后,JSON值语法为:

  

JSON值可以是对象,数组,数字,字符串,true,false或null。

这与@quentin引用的RFC直接冲突。更新后的RFC是8259,其中指出:

  

请注意,某些先前的JSON规范将JSON文本限制为对象或数组。仅生成对象或数组的实现,其中   从所有实现都将它们接受为符合JSON的意义上说,要求JSON文本将是可互操作的。