给出一串JSON数据,你如何安全地将该字符串变成一个JavaScript对象?
很明显,你可以用一些不安全的方式来做,比如...
var obj = eval("(" + json + ')');
...但这让我们容易受到包含其他代码的json字符串的影响,简单地评估这些代码似乎非常危险。
**编辑:这个答案是针对IE < 7的,对于现代浏览器,请查看Jonathan'的上述答案。
编辑:这个答案已经过时了,Jonathan'上面的答案 (JSON.parse(jsonString)
)现在是**最好的答案。
JSON.org有许多语言的JSON解析器,包括4种不同的Javascript解析器。 我相信大多数人都会认为json2.js是他们的首选实现。
我不清楚其他的方法,但这里是你在[Prototype(JSON教程)](http://www.prototypejs.org/learn/json)中的做法。
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
var json = transport.responseText.evalJSON(true);
}
});
调用evalJSON(),参数为true,可以对输入的字符串进行消毒。