[英]How to check JSON parse method will return value before running the parse
所以我正在使用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;
上面的代碼將使錯誤的輸入意外終止並終止程序。
您可以做兩件事情,它們可以很好地協同工作:
在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
, undefined
, 0
, ""
, NaN
或false
),則最后一行是:
foo4 = cookieData && cookieData.foo4 || /*appropriate default here*/;
那些使用JavaScript強大的功能||
如果cookie
值為falsey ,則使用"null"
而不是cookie
來運算符 (和&&
運算符同樣強大)。 但是,如果cookie中有完全廢話,它也會使用錯誤處理。
我認為您可能會問如何檢查Cookie是否存在,在這種情況下,這應該對您有所幫助-
https://stackoverflow.com/a/5968306/2198713
如果它不為null,則可以繼續嘗試解析它。
為了再次確定它沒問題,您可以將解析包裝在try塊中並捕獲“ SyntaxError”異常-https: //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.