簡體   English   中英

如何檢查JSON解析方法將在運行解析之前返回值

[英]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;

上面的代碼將使錯誤的輸入意外終止並終止程序。

您可以做兩件事情,它們可以很好地協同工作:

  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值( nullundefined0""NaNfalse ),則最后一行是:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM