2011-03-03 35 views
1

私は応答がsとして保存されている解析JSON応答問題

{"item":{"cid":544,"id":3023,"name":"names"},"success":1,"msg":""} 

...の形式でJSONレスポンスを持っています。私が行うと...

var obj = eval('('+s+')'); 

obj = undefined.のでobj.name = undefined

私はこのJSON応答からidnameを取得したいです。なぜ私は働いていないのですか?どうすれば "効かせる"のですか?

答えて

4

のevalは推奨されていません(セキュリティ的に)、JSONパーサーを使用します。

var obj = JSON.parse(result); 

またはブラウザは、JSONパーサーがない場合でも、それが動作することを確認する:

var obj = typeof JSON !='undefined' ? JSON.parse(result) : eval('('+result+')'); 

をこれはお勧めできません。その場合は、この回答コメント(json.orgを参照)で推奨されている代替JSONライブラリを含めることをお勧めします。

次に、あなたが行うことができます。

var id = obj.item.cid; 
var name = obj.item.name; 
+0

私はevalを一切使用しないことをお勧めします。どのような状況においても、より安全なソリューションがあります。 – Dykam

+0

一部のブラウザはJSON.parseをサポートしていないため、プロジェクトにダウンロードして追加することができます。http://www.json.org/ – madeinstefano

0

割り当て全体を代わりに実行してください。

var obj; 
eval('obj = ('+s+')'); 
console.log(obj.item.name); 

代わりにjson2を使用してください。

+0

evalを使用しないでください、json2に行く –

0

https://github.com/douglascrockford/JSON-js

ダウンロードjson.jsのように、JSONを解析し、古いブラウザでのギャップを埋めるために、適切なライブラリを使用する標準的な方法を使用し、そして追加します<script>タグを使用してページへの参照。あなたのブラウザがまだ必要でない場合、スクリプトは自動的に必要なJSONメソッドを提供します。

var object = JSON.parse(yourJSONString); 

Evalは推奨されていません。また、JSONを解析するために使用することを禁止することもできます。簡単な理由から、文字列内のJavaScriptが評価され、コードの挿入が可能になります。任意の言語のevalは危険であり、入力が安全でない可能性がある場合には、必ず使用されることはありません。