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

基于条件移除JSON对象的JOLT转换需求及问题求助

JOLT条件移除数组解决方案(避免null值)

需求回顾

当输入JSON的action字段值不为CREATE时,完全移除body下的Activity数组;action为CREATE时保留原结构,且不能产生null值。

正确JOLT规则

使用shift操作结合条件判断,仅在action=CREATE时映射Activity字段,否则忽略该字段(自然移除):

[
  {
    "operation": "shift",
    "spec": {
      "header": "header",
      "action": "action",
      "body": {
        "*": "body.&",
        "Activity": {
          "@(2,action)": {
            "CREATE": { "@": "body.Activity" }
          }
        }
      }
    }
  }
]

规则说明

  • header和action字段直接映射到输出对应位置,保留原结构
  • body.*: 保留body下除Activity外的所有字段,&代表原字段名
  • body.Activity的处理逻辑:通过@(2,action)获取顶层action值,仅当值为CREATE时,才将Activity数组映射到输出的body.Activity位置;非CREATE时不做映射,数组直接被移除,不会产生null

测试示例

输入(action=UPDATE)

{
  "header": {
    "id": "123"
  },
  "body": {
    "name": "test",
    "Activity": [{"type": "run"}]
  },
  "action": "UPDATE"
}

输出(无Activity数组)

{
  "header": {"id": "123"},
  "action": "UPDATE",
  "body": {"name": "test"}
}

输入(action=CREATE)

{
  "header": {
    "id": "123"
  },
  "body": {
    "name": "test",
    "Activity": [{"type": "run"}]
  },
  "action": "CREATE"
}

输出(保留Activity数组)

{
  "header": {"id": "123"},
  "action": "CREATE",
  "body": {
    "name": "test",
    "Activity": [{"type": "run"}]
  }
}

问题原因

之前的规则可能直接对Activity做了全局映射,当条件不满足时返回null。而上述规则通过条件分支仅在符合要求时才映射该字段,未匹配的分支不会生成任何输出,自然避免了null值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:13:28