1

我的脚本从 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);

如何检查数据并从Cokie获取错误而不是出错

4

3 回答 3

6

你想要一个try catch块:

var fromCookie;
try {
    fromCookie = JSON.parse(cookie);
} catch (e) {
    fromCookie = false;
}
于 2013-02-26T15:58:46.253 回答
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 是否是一个字符串,但我把它留了下来,以防你还有其他代码要执行。

于 2013-02-26T16:01:23.340 回答
1

除非你想写一个完整的 JSON 解析器,否则我建议使用try-catch.

于 2013-02-26T15:59:24.943 回答