【问题标题】:Accessing values from nested json response when name of response is dynamic [duplicate]当响应名称为动态时,从嵌套的 json 响应中访问值 [重复]
【发布时间】:2020-08-19 13:34:44
【问题描述】:

所以我使用 nodejs 向 vultr api 发送一个 get 请求,一旦我解析它,它就会返回一个嵌套的 json 响应:

注意:第一个值“36539496”(以及第二个值“36539499”)是一个动态创建的值,代表/匹配该特定服务器的 SUBID,我无法知道这个值,所以我不能做任何类似 console.log(jsonParsed.36539496.main_ip)

 {
   '36539496' : {
    SUBID: '36539496',
    os: 'Ubuntu 16.04 x64',
    ram: '2048 MB',
    disk: 'Virtual 55 GB',
    main_ip: '123.456.789.10',
    vcpu_count: '1'
  },
  '36539499': {
    SUBID: '36539499',
    os: 'Ubuntu 16.04 x64',
    ram: '2048 MB',
    disk: 'Virtual 55 GB',
    main_ip: '123.456.789.10',
    vcpu_count: '1'
  }
}

我正在尝试访问对象中每个服务器的 main_ip 属性,但似乎无法正确完成

我尝试使用括号符号来访问它,我在这个论坛上看到过它以便访问它,但是由于某种原因,使用任何对象符号通常都会给我未定义的错误,我不确定这是不是因为我做错了对象符号,因为动态对象让我失望。任何帮助表示赞赏

【问题讨论】:

  • 你试过 Object.keys(jsonParsed) 来获取对象键
  • ... 或者如果您对密钥不感兴趣,Object.values(jsonParsed).map(({ main_ip }) => main_ip)
  • 工作得很好,菲尔,谢谢!

标签: javascript node.js json request


【解决方案1】:

使用Object.keys,您将获得一组键。然后您可以映射它们以提取 main_ip 字段:

const obj = {
   '36539496' : {
    SUBID: '36539496',
    os: 'Ubuntu 16.04 x64',
    ram: '2048 MB',
    disk: 'Virtual 55 GB',
    main_ip: '123.456.789.10',
    vcpu_count: '1'
  },
  '36539499': {
    SUBID: '36539499',
    os: 'Ubuntu 16.04 x64',
    ram: '2048 MB',
    disk: 'Virtual 55 GB',
    main_ip: '123.456.789.10',
    vcpu_count: '1'
  }
};
console.log(Object.keys(obj).map(x => obj[x].main_ip));

如果你运行它,它应该会打印出来

[
  "123.456.789.10",
  "123.456.789.10"
]

【讨论】:

  • 当我用我的 jsonParsed 变量替换 obj 时,这也有效,谢谢!
猜你喜欢
  • 2018-04-09
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 2019-10-10
  • 2018-03-30
  • 2016-07-23
  • 2019-10-08
  • 2020-02-07
相关资源
最近更新 更多