所以我使用 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;
上面的代码将给出错误“unexpected end of input”并终止程序。
最佳答案
您可以做两件事,并且可以很好地配合使用:
使用
cookie
的默认值,以防它为空在解析过程中使用错误处理
例如:
var cookieData = null;
var foo4;
try {
cookieData = JSON.parse(cookie || "null");
}
catch (e) {
}
foo4 = cookieData ? cookieData.foo4 : /*appropriate default here*/;
或者,如果您想要默认值,即使 cookieData
存在,但它没有 foo4
或 foo4
是任何 falsey值(null
、未定义
、0
、""
、NaN
或 false
),最后一行是:
foo4 = cookieData && cookieData.foo4 || /*appropriate default here*/;
那些使用 JavaScript's curiously-powerful ||
operator (它是类似强大的 &&
运算符)如果 cookie
的值使用 "null"
而不是 cookie
是错误。但它也使用错误处理,以防 cookie 中完全没有意义。
关于javascript - 如何在运行解析之前检查 JSON 解析方法是否返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31607718/