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 对象的前两层具有数组值。正确的公式是:

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

你要

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

这将产生“100”

如果您使用的是 jQuery,则应$.parseJSON使用eval.

于 2012-12-26T17:21:25.117 回答
2

tblCommoHier本身就是一个数组,所以你应该使用:

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

如果你想测试任何东西,看看这个jsFiddle

于 2012-12-26T17:24:06.503 回答
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 回答