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
相关产品推荐
相关产品推荐

