这个简单的字符串是否被视为有效JSON?

时间:2011-09-20 15:40:18

标签: javascript json

我在SO中看到了很多复杂的问题,不管某些复杂的结构是否被认为是有效的JSON。

但是另一方面的事情呢?

"12345"

以上是否有效JSON?

5 个答案:

答案 0 :(得分:59)

它是有效的JSON语法,表示JSON 。是否是有效的JSON 文本(用于指代JSON生成器的完整输出的正式术语)取决于上下文。

2006年发布的Douglas Crockford RFC 4627(定义{{​​1}}互联网媒体类型):

  

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

因此,使用该简单字符串作为具有互联网媒体类型application/json的HTTP响应的完整正文是不合法的。

但是,JSON规范已在2014年发布的RFC 7159以及ECMA-262的版本5.1和ECMA-404中更新。新规范没有上述限制,因此认为该简单字符串是有效的JSON文本。在RFC 7159中:

  

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


来自json.org的JSON

答案 1 :(得分:15)

截至2014年,RFC 7159废弃旧的JSON RFC,并声明任何 JSON值是有效的JSON文本和有效的application / json内容 - 包括字符串。但是,它还指出了旧JSON实现的不兼容问题:

  

请注意,某些以前的JSON规范约束了a   JSON文本是一个对象或数组。实现   仅生成调用JSON文本的对象或数组   在所有实现都将具有的意义上,它将是可互操作的   接受这些作为符合JSON的文本。

答案 2 :(得分:6)

它是一个有效的JSON字符串,但不是有效的JSON文本(即JSON文件)。

请参阅the JSON specification说明:

  

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

所以你可以在一些JSON中使用它,但它本身不是一个完整的JSON文件。

(值得注意的是,规范定义了一个JSON解析器:

  

JSON解析器将 JSON文本转换为另一种表示形式。

我的<em>

有关第二意见,请参阅JSON Lint

Parse error on line 1:
"12345"
^
Expecting '{', '['

答案 3 :(得分:5)

它是一个有效的JSON字符串,但它不是JSON对象。

请参阅http://www.json.org/

答案 4 :(得分:2)

不,这不是有效的JSON。 JSON是JavaScript Object Notation的首字母缩写。虽然您提供的示例是使用JSON定义的对象 中有效,但它本身无效。看看这个在线JSON验证器:http://jsonlint.com/

  

第1行的解析错误:12345 ^期待'{','['

您可以在http://json.org了解有关JSON的更多信息。