Node.js中从本地JSON匹配关键词并提取指定字段
解决Node.js中JSON遍历匹配及字段获取问题
问题根源
你的代码无法获取pos下的字段,核心是没理清JSON的层级结构:
event.pos是数组类型,不能直接通过.a访问属性,得先取数组内的元素pos数组里的每个元素,和event结构一致,真正的字段都嵌套在$对象里- 你之前写的
event.name是错误写法,正确获取name的方式是event["$"].name,只是巧合能匹配到值
修正后的代码
// result 是加载完成的整个JSON文件数据 const json = result; json.eventposdef.event.forEach(event => { // 正确匹配目标name字段 if (event["$"].name === var2) { // 遍历pos数组(若pos仅含单个元素,可直接用event.pos[0]代替遍历) event.pos.forEach(posItem => { const posData = posItem["$"]; // 按期望格式输出字段 console.log(` "a" ${posData.a}`); console.log(` "x" ${posData.x}`); console.log(` "z" ${posData.z}`); }); } });
代码说明
- 用
event["$"].name完成正确的关键词匹配,这才是对应字段的访问路径 - 因为
pos是数组,所以用forEach遍历处理每个pos元素;如果你的JSON里pos数组永远只有一个元素,也可以直接写const posData = event.pos[0]["$"] - 从
posData中取出目标字段,按要求的格式输出到控制台
输出效果
运行后会得到你期望的输出:
"a" THIS VALUE 1 "x" THIS VALUE 2 "z" THIS VALUE 3
内容的提问来源于stack exchange,提问作者DownVoted
相关产品推荐
相关产品推荐

