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

在Nashorn jjs脚本中高效通用地从JSON获取子元素集合

嘿,作为JavaScript新手能主动琢磨更通用的实现方式,这点特别赞!针对你在Nashorn jjs脚本环境里的需求,我整理了几个实用又易理解的方案,帮你轻松获取[childA, childB]这类子元素集合:

方法1:用Object.values()一键提取(最简洁通用)

如果你的JSON解析后是类似这样的对象结构:

// 假设已经完成JSON解析,得到这个对象
const parsedData = {
  parentNode: {
    childA: "element1",
    childB: "element2",
    childC: "element3"
  }
};

那直接用Object.values()就能快速拿到所有子元素的数组,完全不用关心子元素的键名是什么:

const childCollection = Object.values(parsedData.parentNode);
console.log(childCollection); // 输出 ["element1", "element2", "element3"]

Nashorn在Java 8及以上版本完全支持Object.values(),适配jjs环境毫无问题。

方法2:手动遍历收集(适合理解底层逻辑)

要是你想更清楚地理解对象遍历的原理,或者需要兼容极个别特殊环境,也可以手动遍历对象的键来收集子元素:

const parsedData = {
  parentNode: {
    childA: "element1",
    childB: "element2"
  }
};
const childCollection = [];
// 遍历父节点下的所有键
for (const key in parsedData.parentNode) {
  // 只收集对象自身的属性,避免拿到继承的原型属性
  if (parsedData.parentNode.hasOwnProperty(key)) {
    childCollection.push(parsedData.parentNode[key]);
  }
}
console.log(childCollection); // 输出 ["element1", "element2"]

这种方法更基础,新手学起来也能加深对JS对象的理解。

方法3:筛选特定规则的子元素(灵活适配特殊需求)

如果你的需求不是提取所有子元素,而是只收集键名符合特定规则的(比如都以child开头),可以结合过滤和映射来实现:

const parsedData = {
  parentNode: {
    childA: "element1",
    childB: "element2",
    otherItem: "不需要的元素"
  }
};
// 先拿到键值对,过滤出符合规则的,再提取值
const childCollection = Object.entries(parsedData.parentNode)
  .filter(([key]) => key.startsWith("child"))
  .map(([_, value]) => value);
console.log(childCollection); // 输出 ["element1", "element2"]

这个方法灵活性拉满,能应对各种有筛选条件的场景。

额外注意(针对Nashorn jjs环境)

jjs本质是Java提供的JavaScript引擎,语法上和标准ES5/ES6大部分兼容,上面的代码都能直接运行。如果你的JSON结构嵌套更深,只要调整对象的访问路径(比如parsedData.level1.level2)就可以啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:18:21