为什么JSON.parse失败并带有空字符串?

时间:2015-06-03 13:38:57

标签: javascript json

为什么:

JSON.parse('');

产生错误?

Uncaught SyntaxError: Unexpected end of input

如果它刚刚返回null会不会更合乎逻辑?

5 个答案:

答案 0 :(得分:88)

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

JSON.parse("null");

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

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

也就是说包含两个引号的字符串与空字符串不同。

JSON.parse('""');

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

JSON.parse('');

不会。

有效的最小JSON字符串是

空对象'{}'

空数组'[]'

空的字符串'""'

例如'123.4'

布尔值true 'true'

布尔值false 'false'

空值'null'

答案 1 :(得分:9)

使用try-catch来避免它:

var result = null;
try {
  // if jQuery
  result = $.parseJSON(JSONstring);
  // if plain js
  result = JSON.parse(JSONstring);
}
catch(e) {
  // forget about it :)
}

答案 2 :(得分:1)

JSON.parse期望字符串中的有效表示法,无论是对象{},数组[],字符串""还是数字类型(int,float,double)。

如果解析的内容可能是空字符串,那么开发人员应该检查它。

如果它被内置到函数中,它会增加额外的周期,因为内置函数预计会非常高效,所以没有为比赛情况编程它们是有意义的。

答案 3 :(得分:0)

对于有效的JSON字符串,至少有一个" {}"是必须的。请参阅http://json.org/

了解更多信息

答案 4 :(得分:-2)

因为''不是有效的Javascript / JSON对象。空对象将是' {}'

供参考:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse