一尘不染

最低有效JSON是多少?

javascript

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

  • "string" 字符串是有效的JSON吗?
  • 42 简单数字是有效的JSON吗?
  • true 布尔值是有效的JSON吗?
  • {} 空对象是有效的JSON吗?
  • [] 空数组是有效的JSON吗?

阅读 348

收藏
2020-04-25

共1个答案

一尘不染

在撰写本文时,JSON仅在RFC4627中进行了描述。它(在“2”开头)将JSON文本描述为序列化的对象或数组。

这意味着在符合该标准的解析器和字符串化器中, 只有 {}并且[]是有效的完整JSON字符串。

但是,ECMA-404的引入改变了这一点,更新的建议。


然而,为了进一步混淆该问题,Web浏览器中可用的JSON对象(例如JSON.parse()JSON.stringify()在ES5中进行了标准化,并且明确定义了可接受的JSON文本,如下所示:

本规范中使用的JSON交换格式与RFC 4627完全相同,但有两个例外:

  • ECMAScript JSON语法的顶级JSONText生成可以由任何JSONValue组成,而不是被限制为RFC
    4627指定的JSONObject或JSONArray。

  • 抢断

这意味着即使JSON对象在技术上遵循RFC 4627,JSON对象也可以接受所有JSON值(包括字符串,空值和数字)。

请注意,因此,您可以通过JSON.stringify(5),在符合标准的浏览器中对数字进行字符串化,该数字将被另一个遵循RFC4627的解析器拒绝,但该解析器没有上面列出的特定异常。例如,Ruby似乎就是这样一个例子,它 接受对象和数组作为root,即“它还将对标量类型和NULL进行编码和解码”。

2020-04-25