【问题标题】:Add new field to json object on each index in javascript在javascript中的每个索引上向json对象添加新字段
【发布时间】:2021-03-15 07:20:11
【问题描述】:

我正在尝试从 JSON ping 服务器 IP 并在同一 JSON 上添加响应状态。但是没有添加响应状态。以下是我的代码,请指教

    var IP = [{
        "name": "Server 01",
        "serverip": "10.211.130.32"
    },
    {
        "name": "Server 02",
        "serverip": "10.211.130.33"
    }] 
      for (let host of IP) {
        let res = await ping.promise.probe(host.serverip, {
          timeout: 5 
      });  
      IP = {...IP, "status" : res.alive}
      } 
      console.log(IP)

我得到的输出是

{
"0": {
    "name": "Server 01",
    "serverip": "10.211.130.32"
},
"1": {
    "name": "Server 02",
    "serverip": "10.211.130.53"
},
"status": true

}

期待像这样的输出

[{
        "name": "Server 01",
        "serverip": "10.211.130.32",
        "status" : true
    },
    {
        "name": "Server 02",
        "serverip": "10.211.130.33",
        "status" : false
    }] 

【问题讨论】:

  • 问题解决了吗?

标签: javascript node.js arrays json


【解决方案1】:

for in 并且还使用 IP[host] 作为数据。

您做错了什么,您将整个 IP 替换为 IP 和新密钥 status,而不是您必须在每个 IP 对象中包含 status

var getStat = (ar) => {
  return new Promise((resolve) => {
    setTimeout(() => resolve({ alive: true }), 1000);
  });
}

var func = async () => {
  var IP = [{
      "name": "Server 01",
      "serverip": "10.211.130.32"
    },
    {
      "name": "Server 02",
      "serverip": "10.211.130.33"
    }
  ] 

  for (let host in IP) {
    let res = await getStat(IP[host].serverip, {
        timeout: 5 
    });
    IP[host]['status'] = res.alive
  }

  console.log(IP)
}

func();

【讨论】:

  • 感谢 Adarsh 的回复。我试过并得到消息 - obj.toObject 不是函数
  • 你检查res.alive的值了吗?
  • 是的,它返回真或假
  • 我已经更新了答案,请看一下。
  • 我发现问题出在输入值 IP 上。数据是动态接收的。我已经更正了 IP 值格式并且它有效。非常感谢您的支持
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 2022-06-12
  • 2020-07-30
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
相关资源
最近更新 更多