如何获取嵌套JSON对象的多个值?

时间:2019-01-03 12:54:07

标签: json object nested

我尝试访问我的data json文件:

[{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}

这是我的方法:

data[0].name;

但是这样,我只能得到结果:

Animals

但是我需要结果:

Animals, Cats

2 个答案:

答案 0 :(得分:2)

您仅访问项目数组第0个索引的name属性。 要一次访问所有对象,您需要遍历数组。 您可以为此使用Array.map

var data = [{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}]

var out = data[0].project.map(project => project.name).toString()

console.log(out)

答案 1 :(得分:1)

如果这是您的实际数据对象,那么data[0].name将给您“ Maria”。但是,如果我没看错,您想从project数组中获取所有名称。您可以使用Array.map来轻松实现。请注意,使用ES6 arrow function可以快速轻松地获取对象并返回其名称。

var bigObject = [{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}];
var smallObject = [{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}];

console.log("Getting the names from the full array/data structure: "+bigObject[0].project.map(obj => obj.name))
console.log("Getting the names from just the project array: "+smallObject.map(obj => obj.name))

编辑:根据您对其他答案的评论,您说您需要在此功能中使用解决方案:

"render": function (data, type, row) {if(Array.isArray(data)){return data.name;}}

要实现这一点,您应该使用第一个代码片段的底部解决方案,如下所示:

var data = [{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}];

function render(data, type, row){
  if(Array.isArray(data)){
    return data.map(obj => obj.name);
  }
};

console.log("Render returns \""+render(data)+"\" as an array.");