繁体   English   中英

JSON.parse错误保护

[英]JSON.parse error protection

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

如何检查数据,并获得fromCokie而不是让错误的

您想要一个try catch块:

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

如果要解析的字符串不是有效的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是否为字符串,但是如果您还有其他要执行的代码,我会保留它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM