如何从嵌套的JSON中获取特定或多个值(或键)
我有一个包含对象和数组的(嵌套)数据结构。 如何提取信息,即访问特定或多个值(或键)?
{ "data": [{ "name": "name1", "value": "value1", "list": [{ "sname": "sname1", "svalue": "svalue1" }, { "sname": "sname2", "svalue": "svalue2" }] }] }
jQuery的
var pk = $("#pk").val(); console.log(pk); url = "/register/search?id=" + pk; console.log(url); $('#largeTable').DataTable({ "ajax": url, "bDestroy": true, "columns": [{ "data": "name" }, { "data": "value" }, { "data": "list.1.sname" }, { "data": "list.1.svalue" }, { "data": null, "defaultContent": editview } ] });
这里可以使用list.1或list.0显示第一个或第二个列表值
但我一次想要两个值。
另外,我如何访问list
第二项的svalue
?
我试过data.list[1]
但是:
TypeError:data.list未定义
由于data
是一个数组,你首先应该得到项目 – 因为你只有一个项目 – 你使用data[0]
,然后访问list
属性,如data[0].list[1]
– 这个将为您提供list
的第二项 – 但由于您对svalue
的特定属性( svalue
)感兴趣,您将按如下方式访问它: data[0].list[1].svalue
。
更好的方法是遍历数据数组中的项目 – 然后为每个项目循环遍历列表数组中的项目。 请参阅@ Rajesh的评论。 我希望有所帮助;
具体来说,你可以像这个object.data[0].list[1].svalue
一样访问它。 data.list
undefined
的原因是因为data
对应于数组data: [{ }]
这就是我们使用data[0]
,但data
本身是对象中的一个键,因此在获取data
之前需要访问它。 如果data
所在的对象名称是object
(就像我在下面所做的那样)那么它就像这个object
一样被访问object.data[0]
const object = { "data": [{ "name": "name1", "value": "value1", "list": [{ "sname": "sname1", "svalue": "svalue1" }, { "sname": "sname2", "svalue": "svalue2" }] }] } console.log(object.data[0].list[1].svalue)