javascript - 为什么 JSON.parse 会因空字符串而失败?

为什么会这样:

JSON.parse('');

产生错误?

Uncaught SyntaxError: Unexpected end of input

如果只是返回null岂不是更合乎逻辑?

编辑:这不是链接问题的重复。虽然最小有效 json 的主题与这个问题有关,但它并没有解决“为什么”。

最佳答案

由于空字符串不是有效的 JSON,因此 JSON.parse('') 返回 null 是不正确的,因为 "null" 是有效的 JSON。例如

JSON.parse("null");

返回 null。无效的 JSON 也被解析为 null 是错误的。

虽然空字符串不是有效的 JSON,但两个引号是有效的 JSON。这是一个重要的区别。

也就是说一个包含两个引号的字符串和一个空字符串不是一回事。

JSON.parse('""');

将正确解析,(返回一个空字符串)。但是

JSON.parse('');

不会。

有效的最小 JSON 字符串是

空对象'{}'

空数组'[]'

为空的字符串'""'

一个数字,例如'123.4'

bool 值true 'true'

bool 值 false 'false'

空值'null'

https://stackoverflow.com/questions/30621802/

相关文章:

.net - 从 JSON Schema 生成 C# 类

python - 如何更改可序列化 python 对象的 json 编码行为?

json - 为什么 Boost 属性树 write_json 将所有内容都保存为字符串?有可能改变

javascript - 使用 JSON 制作 XmlHttpRequest POST

json - 下载 jackson.codehaus.org jar

javascript - 如何将 JavaScript 对象编码为 JSON?

python - 将json字符串反序列化为python中的对象

python - Python中的JSON输出排序

c# - Json.Net 中的 PreserveReferencesHandling 和 Refe

java - jackson 通过删除 'is' 重命名原始 boolean 字段