我已经仔细阅读了JSON描述http://json.org/,但我不确定我知道这个简单问题的答案。什么字符串是最小可能有效的JSON?

“字符串”是字符串有效的JSON? 42简单的数字是有效的JSON吗? 布尔值是有效的JSON吗? {}空对象是一个有效的JSON? []空数组是有效的JSON吗?


当前回答

Internet上至少有四个文档可以被视为JSON标准。引用的rfc都描述了mime类型application/json。下面是关于顶层值,以及是否允许除对象或数组之外的任何东西位于顶层的说明:

rfc - 4627:没有。

JSON文本是一个令牌序列。令牌集包括6个 结构字符、字符串、数字和三个字面名称。 JSON文本是一个序列化的对象或数组。 JSON-text =对象/数组

请注意,RFC-4627被标记为“信息”,而不是“拟议标准”,它被RFC-7159废止,而RFC-7159又被RFC-8259废止。

rfc - 8259:是的。

JSON文本是一个令牌序列。令牌集包括6个 结构字符、字符串、数字和三个字面名称。 JSON文本是一个序列化的值。请注意,以前的某些 JSON规范将JSON文本约束为对象或对象 数组中。只生成对象或数组的实现 JSON文本调用将是互操作的意义上,所有 实现将接受这些作为符合JSON文本。 JSON-text = ws值

RFC-8259的日期为2017年12月,标记为“INTERNET标准”。

ecma - 262:是的。

JSON句法语法根据JSON词法定义的标记定义有效的JSON文本 语法。语法的目标符号是JSONText。 语法 JSONText: JSONValue JSONValue: JSONNullLiteral JSONBooleanLiteral JSONObject JSONArray JSONString JSONNumber

ecma - 404:是的。

JSON文本是由符合JSON值的Unicode代码点组成的令牌序列 语法。这组令牌包括六个结构令牌、字符串、数字和三个字面名称令牌。

其他回答

是的,是的,是的,是的,是的。它们都是有效的JSON值字面量。

然而,官方RFC 4627规定:

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

所以一个完整的“文件”应该包含一个对象或数组作为最外层的结构,当然可以是空的。然而,许多JSON解析器也接受原始值作为输入。

JSON代表JavaScript对象表示法。只有{}和[]定义Javascript对象。其他的例子是值字面量。Javascript中有用于处理这些值的对象类型,但表达式“string”是文字值的源代码表示,而不是对象。

请记住JSON不是Javascript。它是一种表示数据的符号。它有一个非常简单和有限的结构。JSON数据使用{},:[]字符进行结构化。只能在该结构中使用文字值。

服务器用对象描述或文字值来响应是完全有效的。所有JSON解析器都应该只处理一个文字值,但只能处理一个值。JSON一次只能表示一个对象。因此,对于一个服务器来说,如果要返回多个值,就必须将其构造为对象或数组。

只要按照json.org页面上给出的铁路图表来做就可以了。[]和{}是可能的最小有效JSON对象。所以答案是[]和{}。

var x; console.log (JSON.stringify (x));//输出"{}"

所以你的答案是“{}”,它表示一个空对象。

Internet上至少有四个文档可以被视为JSON标准。引用的rfc都描述了mime类型application/json。下面是关于顶层值,以及是否允许除对象或数组之外的任何东西位于顶层的说明:

rfc - 4627:没有。

JSON文本是一个令牌序列。令牌集包括6个 结构字符、字符串、数字和三个字面名称。 JSON文本是一个序列化的对象或数组。 JSON-text =对象/数组

请注意,RFC-4627被标记为“信息”,而不是“拟议标准”,它被RFC-7159废止,而RFC-7159又被RFC-8259废止。

rfc - 8259:是的。

JSON文本是一个令牌序列。令牌集包括6个 结构字符、字符串、数字和三个字面名称。 JSON文本是一个序列化的值。请注意,以前的某些 JSON规范将JSON文本约束为对象或对象 数组中。只生成对象或数组的实现 JSON文本调用将是互操作的意义上,所有 实现将接受这些作为符合JSON文本。 JSON-text = ws值

RFC-8259的日期为2017年12月,标记为“INTERNET标准”。

ecma - 262:是的。

JSON句法语法根据JSON词法定义的标记定义有效的JSON文本 语法。语法的目标符号是JSONText。 语法 JSONText: JSONValue JSONValue: JSONNullLiteral JSONBooleanLiteral JSONObject JSONArray JSONString JSONNumber

ecma - 404:是的。

JSON文本是由符合JSON值的Unicode代码点组成的令牌序列 语法。这组令牌包括六个结构令牌、字符串、数字和三个字面名称令牌。