将新键附加到 JSON 数组

问题描述 投票:0回答:2

我有 Zabbix 检索的 JSON 数组,每个对象都有键“startTime”和“endTime”,它们是格式为“DD-MM-YYYY HH:mm:ss”的日期时间字符串.

使用 Javascript,我尝试向数组中的每个对象添加一个新键。 新密钥称为“execTime”,它的值应等于“endTime”和“startTime”之间的差(以秒为单位)。

输入JSON示例:

[
    {
    "endTime": "02-02-2024 10:10:20",
    "startTime": "02-02-2024 10:10:10",
    },
    {
    (...)
    }
]

预期输出 JSON:

[
    {
    "endTime": "02-02-2024 10:10:20",
    "startTime": "02-02-2024 10:10:10",
    "execTime": 10
    },
    {
    (...)
    }
]

为此,我尝试使用以下脚本。

function (value) {
    const jsonValue = JSON.parse(value);

    for (var i = 0; i < jsonValue.length; i++) {
      const startDate = new Date(jsonValue[i].startTime);
      const endDate = new Date(jsonValue[i].endTime);

      const execTime = ( endDate.getTime() - startDate.getTime() ) / 1000;
      if ( execTime < 0 ) { var execTime = 0; }
      jsonValue[i].execTime = execTime;
    };

    return jsonValue;
}

问题是返回值是这样的:

[object Object],[object Object],[object Object], (...)

对此有什么想法吗?

javascript arrays json object append
2个回答
0
投票

返回 JSON.stringify(jsonValue);

// 将结果转换回JSON格式的字符串


0
投票

无需 JSON.parse 您的数据,您只需直接访问属性即可。如果您稍后尝试更改变量的值,也请避免在变量中使用

const

var data = [
    {
    "endTime": "02-02-2024 10:10:20",
    "startTime": "02-02-2024 10:10:10",
    },
    {
    "endTime": "02-02-2024 10:09:40",
    "startTime": "02-02-2024 10:10:10",
    },
    {
    "endTime": "02-02-2024 10:10:30",
    "startTime": "02-02-2024 10:10:10",
    },
    {
    "endTime": "02-02-2024 10:10:50",
    "startTime": "02-02-2024 10:10:10",
    }
];

function insertExecTime(data) {
    for (var i = 0; i < data.length; i++) {
      let startDate = new Date(data[i].startTime);
      let endDate = new Date(data[i].endTime);

      let execTime = ( endDate.getTime() - startDate.getTime() ) / 1000
      if ( execTime < 0 ) { 
       execTime = 0; 
      }
      data[i].execTime = execTime;
    };
}

insertExecTime(data);
console.log(data);

© www.soinside.com 2019 - 2024. All rights reserved.