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

如何使用JavaScript遍历API返回的嵌套JSON对象?

问题:遍历API返回JSON数据的所有键值对

API返回的JSON结构如下:

{
"data": [
{
  "ActionNeeded": null,
  "OldestStatus": null,
  "ServiceHost": "W501",
  "ServiceName": "Renewals",
  "ServiceStatusDateTime": "2023-03-15T22:47:05.313000",
  "ServiceVersion": "1.0.0",
  "SortOrder": "0",
  "TimeAgo": null
},
{
  "ActionNeeded": null,
  "OldestStatus": null,
  "ServiceHost": "W202",
  "ServiceName": "Monitor",
  "ServiceStatusDateTime": "2023-03-15T22:46:42.560000",
  "ServiceVersion": null,
  "SortOrder": "1",
  "TimeAgo": null
},
{
  "ActionNeeded": null,
  "OldestStatus": null,
  "ServiceHost": "W0070204",
  "ServiceName": "Monitor",
  "ServiceStatusDateTime": "2023-03-15T22:46:39.840000",
  "ServiceVersion": "2.0.2",
  "SortOrder": "1",
  "TimeAgo": null
}
]
}

当前尝试的代码仅能获取数组索引,无法遍历每个对象的键值对:

var json_obj = JSON.parse(event.data);

// Returned records
const items = json_obj['data'];

for (var item_index in items) {
    if (items.hasOwnProperty(item_index)) {
        console.log(item_index);
    }
}

解决方案

要遍历每组数据并输出对应的键和值,需要两层遍历:先遍历data数组里的每个对象,再遍历每个对象内部的键值对。以下是几种可行的实现方式:

方法1:for...of + Object.entries(推荐)

用for...of遍历数组更直观,Object.entries()可直接提取对象的键值对数组:

const json_obj = JSON.parse(event.data);
const items = json_obj.data;

// 遍历数组中的每个服务对象
for (const item of items) {
    console.log('--- 服务信息分割线 ---');
    // 遍历当前对象的所有键值对
    for (const [key, value] of Object.entries(item)) {
        console.log(`${key}: ${value}`);
    }
}

方法2:传统for循环 + for...in(兼容旧环境)

如果需要适配低版本JavaScript环境,可使用传统循环结合for...in:

const json_obj = JSON.parse(event.data);
const items = json_obj.data;

// 遍历数组索引
for (let i = 0; i < items.length; i++) {
    const item = items[i];
    console.log('--- 服务信息分割线 ---');
    // 遍历对象的每个键
    for (const key in item) {
        if (item.hasOwnProperty(key)) {
            console.log(`${key}: ${item[key]}`);
        }
    }
}

方法3:数组forEach方法(简洁函数式写法)

用数组的forEach方法实现更简洁的遍历:

const json_obj = JSON.parse(event.data);
json_obj.data.forEach(item => {
    console.log('--- 服务信息分割线 ---');
    Object.entries(item).forEach(([key, value]) => {
        console.log(`${key}: ${value}`);
    });
});

以上方法都会输出每个服务对象的所有键和对应的值,包含null类型的字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:52:41