0

ここにコードがあります

var txt = '{"tblCommoHier":[ {"DEPT":[' + '{"DEPT":"100","DEPT_NAME":"Collectibles" },' + '{"DEPT":"105","DEPT_NAME":"Commodities" },' + '{"DEPT":"140","DEPT_NAME":"Souvenir" }]}]}';              
var obj = eval ("(" + txt + ")");

私はコードを試しています

obj.tblCommoHier.DEPT[1].DEPT

tblCommoHierの下にあるDEPT要素の最初の要素に到達しますが、定義されていないというエラーが表示され続けます。

誰かがこの問題について私を助けてくれますか?

4

4 に答える 4

4

一般に、の使用は避けてevalください。JSONオブジェクトには、parse文字列からJSONに変換するためのメソッドがあります。また、配列にネストされたオブジェクトを逆参照するときは、配列のインデックスを覚えておく必要があります。JSONオブジェクトの最初の2つのレイヤーには、配列値があります。正しい定式化は次のとおりです。

var txt = '{"tblCommoHier":[ {"DEPT":[' + '{"DEPT":"100","DEPT_NAME":"Collectibles" },' + '{"DEPT":"105","DEPT_NAME":"Commodities" },' + '{"DEPT":"140","DEPT_NAME":"Souvenir" }]}]}';

var obj = JSON.parse(txt);

var elem = obj.tblCommoHier[0].DEPT[0].DEPT;

これにより、が得られ"100"ます。

于 2012-12-26T17:23:05.567 に答える
2

tblCommoHierは配列自体であるため、次を使用する必要があります。

obj.tblCommoHier[0].DEPT[1].DEPT

何かをテストしたい場合は、このjsFiddleを見てください

于 2012-12-26T17:24:06.503 に答える
2

あなたがしたい

obj.tblCommoHier[0].DEPT[0].DEPT

それは「100」をもたらすでしょう

jQuery を使用している場合は、$.parseJSON代わりにeval.

于 2012-12-26T17:21:25.117 に答える
0

これを試してください:http://jsfiddle.net/jbTLB/

var txt = '{"tblCommoHier":[ {"DEPT":[' + '{"DEPT":"100","DEPT_NAME":"Collectibles" },' + '{"DEPT":"105","DEPT_NAME":"Commodities" },' + '{"DEPT":"140","DEPT_NAME":"Souvenir" }]}]}';
var obj = $.parseJSON(txt);
console.log(obj.tblCommoHier[0].DEPT[0].DEPT);
    //-----------------------------------^------this will get the 100
于 2012-12-26T17:31:34.130 に答える