为什么:
JSON.parse('');
产生错误?
Uncaught SyntaxError: Unexpected end of input
如果它刚刚返回null
会不会更合乎逻辑?
答案 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