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