Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问多维Json数组中的深层Json元素_Javascript_Jquery_Json - Fatal编程技术网

Javascript 访问多维Json数组中的深层Json元素

Javascript 访问多维Json数组中的深层Json元素,javascript,jquery,json,Javascript,Jquery,Json,这是密码 var txt = '{"tblCommoHier":[ {"DEPT":[' + '{"DEPT":"100","DEPT_NAME":"Collectibles" },' + '{"DEPT":"105","DEPT_NAME":"Commodities" },' + '{"DEPT":"140","DEPT_NAME":"Souvenir" }]}]}'; var obj = eval ("(" + txt + ")"); 我在试密码 obj.tbl

这是密码

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元素的第一个元素,但我不断收到错误消息,表示未定义

有人能帮我解决这个问题吗?

你想要什么

obj.tblCommoHier[0].DEPT[0].DEPT
这将产生“100”


如果您使用的是jQuery,您应该使用
$.parseJSON
而不是
eval
通常,避免使用
eval
JSON
对象有一个从字符串转换为JSON的
parse
方法。此外,在取消引用嵌套在数组中的对象时,必须记住数组索引。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”

tblCommoHier
本身就是一个数组,因此您应该使用:

obj.tblCommoHier[0].DEPT[1].DEPT
如果您想测试任何东西,请查看以下内容


这会产生未定义的结果。注意数组索引。是的,OP应该使用
JSON.parse()
而不是
eval()
嗨,如何使用obj.tblCommoHier.DEPT[1].DEPT构造JSON以访问项。我问这个问题的原因是因为我不想通过JSON数组中的项目循环来专门到达tblCommoHier.DEPT项目。@MikeBrant
$。parseJSON
在内部使用
JSON.parse
,但它不是通用的;如果他已经在使用jQuery,最好使用前者。@我的评论实际上是关于一般使用JSON解析,而不是
eval()
。您完全可以在这里使用
$.parsJSON()
。使用
JSON.parse
!您只需删除
eval
,并将其替换为
JSON.parse
。顾名思义,它是为解析JSON而设计的。用法如我上面的回答所示。实际上,这个示例在我看来不像是有效的JSON,但我已经向您展示了将JSON字符串转换为上述对象的示例。如果您将字符串分部分构建,那么一旦生成的字符串是有效的JSON字符串,它就完全相同。确保你有所有的引号,并且你的大括号排列得很好。我会照顾剩下的。查看文档了解详细信息。
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