【发布时间】:2015-08-17 18:19:58
【问题描述】:
为什么会这样:
JSON.parse('');
产生错误?
Uncaught SyntaxError: Unexpected end of input
如果只是返回null,不是更符合逻辑吗?
编辑:这不是链接问题的重复。虽然最小有效 json 的主题与这个问题有关,但它并没有解决“为什么”。
【问题讨论】:
-
是的,这似乎是
parse函数设计中的一个错误。你可以把它包装在try catch... 但这很丑:) -
当传入任何无效的 JSON(如空字符串)时会产生错误。实际上,创建一个包含在 try/catch 中以避免此类错误的别名并不少见。
-
空字符串不是有效的 json,然后失败。不要认为它不利于更多分析:)
-
请在此处阅读 JSON 定义 en.wikipedia.org/wiki/JSON 您可以在任何 JSON Validator 中检查 JSON,例如 jsonlint.com 如果您需要空 JSON,则必须使用 {}
-
一个空字符串,正如许多人所提到的,不是一个有效的 JSON 字符串。坦率地说,我认为这是规范的一个缺点,因为返回
null是微不足道的。要求用户检查空字符串或 null,或将JSON.parse包装在try … catch内应该是不必要的。必须提出这个问题的事实也表明它不直观。在任何情况下,您都可以使用:JSON.parse(data||'{}')将空字符串强制转换为安全的内容。
标签: javascript json