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

如何获取嵌套数组中对象的address字段?Node.js JSON读取问题

问题:如何获取JSON中所有records的address字段?

原始JSON数据

{
  "name": "test",
  "records": [
    {
      "position": 1,
      "data": {
        "employees": {
          "teams": [],
          "users": []
        },
        "address": "ABC 123 Street"
      }
     },
     {
      "position": 2,
      "data": {
        "employees": {
          "teams": [],
          "users": []
        },
        "address": "DEF 456 Street"
      }
     }
  ]
}

当前代码

const fs= require('fs');
const { isObject } = require('util');

function jsonReader(filePath,cb){
    fs.readFile(filePath, 'utf-8', (error, fileData) =>{
    if(error){
        return cb && cb(error);
    }
     try {
        const mydata = JSON.parse(fileData);
        return cb && cb(null,mydata);
     } catch (error) {
        return cb && cb(error);
        
     }
    });
}

jsonReader('./data.json',(error,data)=>{
    if(error){
        console.log(error);
    }else{
        console.log(data);
    }
})

当前输出

{
  name: 'test',
  records: [ { position: 1, data: [Object] }, { position: 2, data: [Object] } ]
}

解决方案

1. 解决[Object]无法查看内容的问题

Node.js的console.log打印嵌套对象时会自动截断显示[Object],可以用JSON.stringify完整输出整个对象:

jsonReader('./data.json',(error,data)=>{
    if(error){
        console.log(error);
    }else{
        // 格式化输出完整对象,第三个参数2表示缩进空格数
        console.log(JSON.stringify(data, null, 2));
    }
})

2. 提取所有records中的address字段

直接遍历records数组,取出每个元素的data.address即可,推荐用Array.map方法快速收集所有地址:

jsonReader('./data.json',(error,data)=>{
    if(error){
        console.log(error);
    }else{
        const allAddresses = data.records.map(record => record.data.address);
        console.log('所有地址:', allAddresses);
        // 输出结果:所有地址: [ 'ABC 123 Street', 'DEF 456 Street' ]
    }
})

如果需要逐条打印地址,可用forEach遍历:

jsonReader('./data.json',(error,data)=>{
    if(error){
        console.log(error);
    }else{
        data.records.forEach(record => {
            console.log(`第${record.position}条记录的地址:${record.data.address}`);
        });
        // 输出:
        // 第1条记录的地址:ABC 123 Street
        // 第2条记录的地址:DEF 456 Street
    }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:15:17