1

我以前从未使用eval()过,所以我认为我只是把语法弄错了。以下有什么问题:

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

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

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

4

2 回答 2

5

使用eval时需要将 JSON 包装在()

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

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

请注意,您应该json2.js在使用时包括在内,JSON.*因为某些较旧的浏览器不支持原生 JSON。

于 2012-06-17T10:06:34.323 回答
3

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

于 2012-06-17T10:08:24.883 回答