我以前从未使用过eval()
,所以我认为我只是语法大错特错。以下有什么问题:
var JSONAsString = '{"item1":"one", "item2":"two", "item3":"three"}';
var JSONAsObject = eval(JSONString);
alert(JSONAsObject.item1);
由于它似乎不起作用 - 我加载页面但没有任何反应。
是的,我知道我不应该使用eval。我假设 JSON.parse()
的语法与 eval 的语法相同......右?如果是,如果(在修复代码后)我用 JSON.parse 替换 eval,它还会做同样的事情吗?
使用 eval
时,您需要将 JSON 包装在 ()
中:
var JSONAsString = '{"item1":"one", "item2":"two", "item3":"three"}';
var JSONAsObject = eval('(' + JSONAsString + ')');
alert(JSONAsObject.item1);
但是,您应该从一开始就使用JSON.parse()
,而不仅仅是以后。否则,可能无效的 JSON 是有效的 JavaScript 可能会工作,但在切换到 JSON.parse
时停止工作。
请注意,使用JSON.*
时应包含json2.js
,因为某些较旧的浏览器没有本机 JSON 支持。
不要使用 eval() 来解析 JSON。使用 Douglas Crockfords json2,它为您提供跨浏览器支持、性能和安全性:https://github.com/douglascrockford/JSON-js