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

yyyyJSONではありません。これはJavaScriptオブジェクトです。したがって、この場合はeval何も必要ありません。JSONを扱うときは、JSON.parseの代わりにを使用する必要がありevalます。

eval渡したオブジェクトを変更せずに返すだけです。したがって、ここでは不要です。

于 2012-07-17T13:45:30.353 に答える
1

JSON はシリアライゼーション プロトコルであり、Javascript にインスパイアされた (そして名前が付けられた) Javascript です。あなたが持っているのは、実際の Javascript オブジェクトです。JSON はサーバーからの応答としてブラウザに到着し、何かを使用して文字列を Javascript オブジェクトにデコードする必要があります。 JSON.parseが最良の選択肢です。 evalこれにも機能しますが、非常に鈍くて危険な手段です。

サーバー側で JSON エンコーダーを使用して、サーバーで生成された Javascript に Javascript オブジェクトを挿入できます。これにより、表示しているコードを取得できます。その場合、デコーダーはまったく必要ありません。最初の例で示しているように、単にオブジェクトを使用できます。

于 2012-07-17T13:48:06.283 に答える