如何获取嵌套数组中对象的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
相关产品推荐
相关产品推荐

