簡體   English   中英

JSON.parse錯誤保護

[英]JSON.parse error protection

我的腳本從cookie獲取了一些字符串化的json數據。

var cookie = $.cookie('someKey');
if (typeof(cookie) == 'string') {
    var fromCookie = JSON.parse(cookie);
}

數據通過Cookie來自用戶,因此我想確保它是json。 如果不是json,則腳本會因錯誤而停止

SyntaxError: JSON.parse: end of data after property value in object
var fromCookie = JSON.parse(cookie);

如何檢查數據,並獲得fromCokie而不是讓錯誤的

您想要一個try catch塊:

var fromCookie;
try {
    fromCookie = JSON.parse(cookie);
} catch (e) {
    fromCookie = false;
}

如果要解析的字符串不是有效的JSON,則拋出SyntaxError異常。

根據MDN

您應該將其包圍在try / catch塊中,以捕獲異常:

var cookie = $.cookie('someKey');
if (typeof(cookie) == 'string') {

    var fromCookie = false;

    try {
        fromCookie = JSON.parse(cookie);
    } catch (e) {
        fromCookie = false;
    }
}

您實際上並不需要測試cookie是否為字符串,但是如果您還有其他要執行的代碼,我會保留它。

除非您想編寫完整的JSON解析器,否則建議使用try-catch

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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