我之前从未使用eval()
,所以我认为我的语法非常错误。以下是什么问题:
var JSONAsString = '{"item1":"one", "item2":"two", "item3":"three"}';
var JSONAsObject = eval(JSONString);
alert(JSONAsObject.item1);
因为它似乎不起作用 - 我加载页面并没有任何反应。
是的,我知道我不应该使用eval。我假设JSON.parse()
的语法与eval的语法相同......对吗?如果是,如果(在修复代码之后)我用ESON.parse替换eval,它还会做同样的事情吗?
答案 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