我有 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], (...)
对此有什么想法吗?
返回 JSON.stringify(jsonValue);
// 将结果转换回JSON格式的字符串
无需 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);