Eval不起作用 - JavaScript

时间:2012-06-17 10:04:59

标签: javascript json eval

我之前从未使用eval(),所以我认为我的语法非常错误。以下是什么问题:

var JSONAsString = '{"item1":"one", "item2":"two", "item3":"three"}';
var JSONAsObject = eval(JSONString);
alert(JSONAsObject.item1);

因为它似乎不起作用 - 我加载页面并没有任何反应。

是的,我知道我不应该使用eval。我假设JSON.parse()的语法与eval的语法相同......对吗?如果是,如果(在修复代码之后)我用ESON.parse替换eval,它还会做同样的事情吗?

2 个答案:

答案 0 :(得分:5)

使用eval时,您需要在()中包装JSON:

var JSONAsString = '{"item1":"one", "item2":"two", "item3":"three"}';
var JSONAsObject = eval('(' + JSONAsString + ')');
alert(JSONAsObject.item1);

但是,您应该从头开始使用JSON.parse() ,而不仅仅是稍后。否则,可能无效的JSON可能有效,但在切换到JSON.parse时会停止工作。

请注意,使用JSON.*时应包含json2.js,因为某些较旧的浏览器没有本机JSON支持。

答案 1 :(得分:3)

不要使用eval()来解析JSON。使用Douglas Crockfords json2,它为您提供跨浏览器支持,性能和安全性:https://github.com/douglascrockford/JSON-js