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

JOLT条件取值优化问询:存在B取B数据,无B则取A数据

JOLT JSON转换优化方案

需求说明

当输入存在P.B节点时,提取其One.Two.Three下的数据;若P.B不存在,则提取P.A.One.Two.Three下的数据。

优化后的JOLT Spec

[
  {
    "operation": "modify-default-beta",
    "spec": {
      "P": {
        "B": "@(1,A)" // 当P.B不存在时,将P.A的内容赋值给P.B
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "P": {
        "B": {
          "One": {
            "Two": {
              "Three": {
                "*": {
                  "ID": "Data.ID",
                  "Some": {
                    "ID_1": "Data.ID_1",
                    "*": "Data.&" // 动态匹配Some下的其他字段(如AAA/BBB)
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

方案解析

  1. modify-default-beta操作:确保P.B节点始终存在。若原始输入无P.B,自动将P.A的内容复制到P.B;若已有P.B,则保留原内容,无需额外分支判断。
  2. shift操作:统一从P.B.One.Two.Three路径提取数据:
    • 直接映射ID到Data.ID
    • 映射Some.ID_1到Data.ID_1
    • 用*动态匹配Some下的自定义字段(如示例中的AAA或BBB),自动同步到Data节点下

验证结果

  • 带B的输入输出:
{
  "Data": {
    "ID": "654321",
    "ID_1": "987654321",
    "BBB": "bbb"
  }
}
  • 不带B的输入输出:
{
  "Data": {
    "ID": "123456",
    "ID_1": "123456789",
    "AAA": "aaa"
  }
}

原Spec问题分析

原Spec仅在P.B存在时生效,因为modify-default-beta仅修改P.B.One.Two.Three.*.ID,但如果P.B本身不存在,该操作不会生成P.B节点,导致后续shift操作找不到对应路径,无法输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:05:16