2017-03-06 63 views
0

我有一个(嵌套的)数据结构包含对象和数组。我如何提取信息,即访问特定或多个值(或键)?如何从嵌套的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 is undefined

+1

'数据[0] .LIST [1]'被访问,注意'data'也是一个数组 – Satpal

+0

'data.forEach((d)=> {d.list.forEach((l,i)=> {console.log(“list date:”,l,“index:” ,我;)})})' – Rajesh

+0

'''data [0] .list [1] .svalue''' – Yod

回答

0

由于data是一个数组,你应该首先获得该项目 - 因为你只能有一个项目 - 你会使用data[0],然后去访问list财产如data[0].list[1] - 这会给你list中的第二项 - 但由于您对此物品的特定物业(svalue)感兴趣,因此您可以像这样访问它:data[0].list[1].svalue

更好的方法是循环访问数据数组中的项 - 然后循环访问列表数组中的项。请参阅@ Rajesh的评论。 我希望有帮助;

0

具体而言,您可以像这样访问它object.data[0].list[1].svalue。究其原因data.listundefined是因为data相当于一个数组data: [{ }]这就是为什么我们使用data[0],但data本身就是一个对象的关键这样,才能得到你需要访问它data。如果对象name其中data驻留分别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)

+0

如何将多个列表值设置为数据表? – user7646838

相关问题