【问题标题】:How can I get access to multiple values of nested JSON object?如何访问嵌套 JSON 对象的多个值?
【发布时间】:2019-05-30 01:38:15
【问题描述】:

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

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

这是我的方法:

data[0].name;

但是像这样我只得到结果:

Animals

但我需要结果:

Animals, Cats

【问题讨论】:

    标签: json object nested


    【解决方案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;}}
    

    要实现这一点,看起来你应该像这样使用我的第一个 sn-p 的底部解决方案:

    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.");

    【讨论】:

    • @Jarla 很高兴我能帮上忙!祝你好运,无论你用它做什么。 :)
    【解决方案2】:

    您仅访问项目数组第 0 个索引的名称属性。 要一次访问所有对象,您需要遍历数组。 您可以为此使用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)

    【讨论】:

    • 谢谢,但这让我很困惑,因为我的示例中的data 实际上正在替换project,而在您的示例中,您有数据和项目两个不同的东西。我现在不知道如何将其转移到我的代码"render": function (data, type, row) {if(Array.isArray(data)){return data.name;}}
    • 根据您的示例。如果 data 是提供的 json,则 data[0].nameMaria 而不是 Animals。如果您收到Animals,则表示数据实际上是your given json => project
    • 如果数据是项目数组:就做data.map(project => project.name).toString()
    • 数据 = 项目。这意味着 data.map(data => data.name).toString()
    • 能不能只写这个data[,].name
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    相关资源
    最近更新 更多