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

如何用JOLT递归转换多层嵌套modules的JSON结构?

用JOLT递归提取多层嵌套modules的所有id

问题说明

源JSON包含层级数量未知的嵌套modules结构,现有Shift操作Spec只能提取顶层id,需要生成能收集所有层级id的new_modules数组。

输入JSON

{"modules": [{"id": "1","modules": [{"id": "1.1","modules": []},{"id": "1.2","modules": [{"id": "1.2.1","modules": []}]}]},{"id": "2","modules": [{"id": "2.1","modules": []}]}]}

现有Spec(仅提取顶层id)

[{"operation": "shift","spec": {"modules": {"*": {"id": "new_modules[&1].id"}}}}]

期望输出

{"new_modules": [{"id": "1"},{"id": "1.1"},{"id": "1.2"},{"id": "1.2.1"},{"id": "2"},{"id": "2.1"}]}

解决方案:递归Shift Spec

[
  {
    "operation": "shift",
    "spec": {
      "modules": {
        "*": {
          "id": "new_modules[]",
          "modules": "@recurse"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "new_modules": {
        "*": {
          "$": "new_modules[&1].id"
        }
      }
    }
  }
]

说明

  1. 第一个Shift操作:

    • 用"id": "new_modules[]"把每个层级的id追加到new_modules数组中,[]会自动按顺序添加元素,避免索引覆盖问题
    • 用"modules": "@recurse"递归处理当前模块下的嵌套modules结构,实现多层遍历
  2. 第二个Shift操作:

    • 把new_modules数组中的字符串id转换为{"id": "xxx"}的对象格式,匹配期望输出结构

内容的提问来源于stack exchange,提问作者Ganesh Ramachandran Nair

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:35:20