You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js新手求助:解析JSON数组并提取指定字段的方法

解决Node.js中解析JSON数组并提取计算时间字段的问题

别担心,刚接触Node.js遇到这种数组结构的JSON解析问题太正常啦!你的返回数据是一个数组(外层用[]包裹),里面只有一个对象,所以只需要先取出数组里的第一个元素,再像普通JSON对象一样提取字段就可以了,计算时间差也很简单,用Date对象处理就行。

修改后的完整代码

var http = require("http");
var options = {
 "method" : "GET",
 "hostname" : "xxx.xxx.xxx.xxx",
 "port" : "18080",
 "path" : "/api/v1/applications/app-20180103124606-0007/stages/0"
};
var req = http.request(options, function (res) {
 var chunks = [];
 res.on("data", function (chunk) {
 chunks.push(chunk);
 });
 res.on("end", function () {
   try {
     // 解析JSON,得到一个数组
     var stageArray = JSON.parse(Buffer.concat(chunks));
     // 取出数组中的第一个元素(你的返回里只有这一个对象)
     var stageData = stageArray[0];

     // 提取firstTaskLaunchedTime作为launchTime
     const launchTime = stageData.firstTaskLaunchedTime;
     console.log('launchTime:', launchTime);

     // 计算taskTime:completionTime减去firstTaskLaunchedTime,得到毫秒数
     const completionDate = new Date(stageData.completionTime);
     const launchDate = new Date(launchTime);
     const taskTimeMs = completionDate - launchDate;
     // 可以转成秒更易读
     const taskTimeSec = taskTimeMs / 1000;
     console.log('taskTime(毫秒):', taskTimeMs);
     console.log('taskTime(秒):', taskTimeSec);
   } catch (err) {
     // 处理解析错误或者字段缺失的情况
     console.error('处理数据时出错:', err);
   }
 });
});
req.end();

关键步骤说明

  • 解析数组:JSON.parse后得到的是数组,所以用stageArray[0]直接取出里面的唯一对象;
  • 提取时间字段:直接从对象中获取firstTaskLaunchedTime和completionTime;
  • 计算时间差:把两个时间字符串转成Date对象,相减就能得到毫秒级的时间差,按需转成秒/分钟等格式;
  • 异常处理:加个try-catch可以避免JSON解析失败或者字段不存在导致的脚本崩溃,新手阶段很实用。

如果之后返回的数组可能有多个元素,你可以用forEach循环遍历数组,逐个处理每个对象里的字段哦~

内容的提问来源于stack exchange,提问作者pac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:17:07