如何从嵌套的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)