2013-02-26 100 views
1

我的腳本從cookie獲取一些字符串化的json數據。JSON.parse錯誤保護

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而不是讓錯誤

+2

看到這個問題下面的幾個問題,它顯示了一個try/catch方法:http://stackoverflow.com/questions/15093419/how-do-you-use-parsejson-in-jquery-1-9 -1 – adeneo 2013-02-26 15:58:38

回答

2

如果要解析的字符串不是有效的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是這裏的字符串,但我把它放在你的情況下還有一些其他代碼可以執行。

6

你想要一個try catch塊:

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

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