0
<!DOCTYPE html>
<html>
<body>
<h2>JSON Object Creation in JavaScript</h2> 

<p>
Name: <span id="jname"></span><br />
Eval Name: <span id="evalname"></span><br />
<p>
<script>
var yyyy= {
"name":"John Johnson",
"street":"Oslo West 555",
"age":33,
"phone":"555 1234567"};


document.getElementById("jname").innerHTML = yyyy.name;
document.getElementById("evalname").innerHTML = eval(yyyy).name;
</script>

</body>
</html>

我要出来了,如下所示,无论有无 eval()

JavaScript 中的 JSON 对象创建

姓名:约翰·约翰逊

评估名称:约翰·约翰逊

4

2 回答 2

7

yyyy不是 JSON。它是一个 JavaScript 对象。所以在这种情况下,你不需要eval任何东西。当你处理 JSON 时,你应该使用JSON.parse而不是eval.

eval只需返回您传递给它的对象,而不修改它。所以这里是多余的。

于 2012-07-17T13:45:30.353 回答
1

JSON 是一种序列化协议,其灵感来自(并命名为)Javascript。你所拥有的是一个实际的 Javascript 对象。JSON 将作为来自服务器的响应到达浏览器,您必须使用某些东西将字符串解码为 Javascript 对象。 JSON.parse是最好的选择。 eval也适用于此,但它是一种非常生硬和危险的工具。

您可以在服务器端使用 JSON 编码器将 Javascript 对象插入到服务器生成的 Javascript 中,这可能是您获得所显示代码的方式。在这种情况下,您根本不需要解码器,您可以简单地使用您在第一个示例中显示的对象。

于 2012-07-17T13:48:06.283 回答