2013-02-26 93 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