给定一个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()方法进行解析。