javascript - 如何在运行解析之前检查 JSON 解析方法是否返回值

标签 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;

上面的代码将给出错误“unexpected end of input”并终止程序。

最佳答案

您可以做两件事,并且可以很好地配合使用:

  1. 使用 cookie 的默认值,以防它为空

  2. 在解析过程中使用错误处理

例如:

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

或者,如果您想要默认值,即使 cookieData 存在,但它没有 foo4foo4 是任何 falsey值(null未定义0""NaNfalse),最后一行是:

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/

相关文章:

javascript - 带有 Bootstrap 的 HTML 和 CSS/简单问题为什么两个容器在我的代码中重叠

javascript - 在什么情况下我们必须使用本地存储而不是cookies?

javascript - chrome_url_overrides 不适用于隐身新标签

Javascript 在此 JSON 中添加一个变量

json - 不知道为什么我收到 "Value of property VPCSecurityGroups must be of type List of String"错误

javascript - 使用 Jquery 以正确的格式构建 JSON

java - 请求头中cookie和字符串的区别

powershell - 在 Powershell 中使用 Chrome Cookies 调用 WebRequest

javascript - 当我在 codeigniter 中单击添加按钮时,我如何在动态表中获得序列号

javascript - 按钮仅在双击后切换