给定一个JSON数据字符串,如何安全地将该字符串转换为JavaScript对象?
很明显,我可以用这样的方式来做这件事:
var obj = eval("(" + json + ')');
但这让我很容易受到包含其他代码的JSON字符串的攻击,简单地eval似乎非常危险。
给定一个JSON数据字符串,如何安全地将该字符串转换为JavaScript对象?
很明显,我可以用这样的方式来做这件事:
var obj = eval("(" + json + ')');
但这让我很容易受到包含其他代码的JSON字符串的攻击,简单地eval似乎非常危险。
当前回答
只要你能保证一个相当现代的浏览器,JSON.parse(jsonString)就是一种纯JavaScript方法。
其他回答
只要你能保证一个相当现代的浏览器,JSON.parse(jsonString)就是一种纯JavaScript方法。
将对象转换为JSON,然后解析它,对我来说很有用,比如:
JSON.parse(JSON.stringify(object))
这个答案适用于IE<7,对于现代浏览器,请查看上面Jonathan的答案。
这个答案已经过时,Jonathan上面的答案(JSON.parse(jsonString))现在是最好的答案。
JSON.org有多种语言的JSON解析器,包括四种不同的JavaScript解析器。我相信大多数人都会考虑将json2.js作为他们的goto实现。
试试这个。这是用打字机写的。
export function safeJsonParse(str: string) {
try {
return JSON.parse(str);
} catch (e) {
return str;
}
}
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
回调传递返回的数据,该数据将是JSON结构定义的JavaScript对象或数组,并使用$.parseJSON()方法进行解析。