如何检查JSON解析方法将在运行解析之前返回值

时间:2015-07-24 10:07:15

标签: javascript json cookies

所以我使用JSON.parse - 方法从cookie中检索特定数据。但是,如果cookie值不存在,则输入结束。无论如何都要在尝试解析之前验证这些数据是否存在?

actual cookie data : "foo1":"1123","foo2":"332","foo3":"773" 

//function to retrieve cookie
function getCookie(name) {
    var re = new RegExp(name + "=([^;]+)");
    var value = re.exec(document.cookie);
    return (value !== null) ? unescape(value[1]) : null;
}
var cookie = getCookie("cookiename");
var cookieData = JSON.parse(cookie).foo4;

上面的代码会给出错误意外的输入结束并终止程序。

2 个答案:

答案 0 :(得分:1)

你可以做两件事,它们可以很好地协同工作:

  1. 如果cookie空白,请使用默认

  2. 使用解析周围的错误处理

  3. E.g:

    var cookieData = null;
    var foo4;
    try {
        cookieData = JSON.parse(cookie || "null");
    }
    catch (e) {
    }
    foo4 = cookieData ? cookieData.foo4 : /*appropriate default here*/;
    

    或者,如果你想要默认cookieData,但它没有foo4foo4是任何虚假值(nullundefined0""NaNfalse),最后一行是:

    foo4 = cookieData && cookieData.foo4 || /*appropriate default here*/;
    

    如果&&的值使用JavaScript's curiously-powerful || operator(及其功能相似的"null"运算符),则使用cookie而不是cookie falsey 。但是使用错误处理,以防cookie完全无意义。

答案 1 :(得分:0)

我想您可能会问如何检查cookie是否存在,在这种情况下这应该对您有帮助 -

https://stackoverflow.com/a/5968306/2198713

如果它不为null,那么你可以继续尝试解析它。

为了确保它没问题,你可以将你的解析包装在try块中并捕获一个' SyntaxError'例外 - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse