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

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}`);
    });
  }
});

代码说明

  1. 用event["$"].name完成正确的关键词匹配,这才是对应字段的访问路径
  2. 因为pos是数组,所以用forEach遍历处理每个pos元素;如果你的JSON里pos数组永远只有一个元素,也可以直接写const posData = event.pos[0]["$"]
  3. 从posData中取出目标字段,按要求的格式输出到控制台

输出效果

运行后会得到你期望的输出:

"a" THIS VALUE 1
    "x" THIS VALUE 2
    "z" THIS VALUE 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:37:27