JSON.parse错误保护

时间:2013-02-26 15:57:12

标签: jquery json

我的脚本从cookie中获取一些字符串化的json数据。

var cookie = $.cookie('someKey');
if (typeof(cookie) == 'string') {
    var fromCookie = JSON.parse(cookie);
}

数据来自用户通过cookie,所以我想确定它是json。 如果它不是json,脚本将停止并显示错误

SyntaxError: JSON.parse: end of data after property value in object
var fromCookie = JSON.parse(cookie);

如何检查数据并 false fromCokie 而非收到错误

3 个答案:

答案 0 :(得分:6)

您需要try catch块:

var fromCookie;
try {
    fromCookie = JSON.parse(cookie);
} catch (e) {
    fromCookie = false;
}

答案 1 :(得分:2)

  

如果要解析的字符串无效JSON,则出现SyntaxError异常   抛出。

根据MDN

你应该在try / catch块中包围它,以捕获异常:

var cookie = $.cookie('someKey');
if (typeof(cookie) == 'string') {

    var fromCookie = false;

    try {
        fromCookie = JSON.parse(cookie);
    } catch (e) {
        fromCookie = false;
    }
}

你真的不需要在这里测试cookie是否是一个字符串,但是如果你还有一些其他代码要执行的话,我就离开了。

答案 2 :(得分:1)

除非您想编写完整的JSON解析器,否则我建议使用try-catch