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

编写Jolt转换规则:处理数组空值生成finalFee字段

Jolt转换规则修改方案

业务场景

  • 场景1:当fee1有值且fee2为空字符串时,finalFee取fee1的值
  • 场景2:当fee1为空字符串且fee2有值时,finalFee取fee2的值
  • 场景3:当fee1和fee2均有值时,finalFee取fee1的值

输入JSON

{
  "school": [
    {
      "schoolCode": ["SH","MA","KR"],
      "fee1": [3,"",5],
      "fee2": ["",10,15]
    }
  ]
}

预期输出JSON

{
  "school": [
    {
      "schoolCode": "SH",
      "finalFee": 3
    },
    {
      "schoolCode": "MA",
      "finalFee": 10
    },
    {
      "schoolCode": "KR",
      "finalFee": 5
    }
  ]
}

修改后的Jolt转换规则

[
  // 第一步:将数组元素一一对应,生成包含schoolCode、fee1、fee2的单个对象
  {
    "operation": "shift",
    "spec": {
      "school": {
        "*": {
          "schoolCode": {
            "*": {
              "@": "school.[&1].schoolCode",
              "../../fee1[&1]": "school.[&1].fee1",
              "../../fee2[&1]": "school.[&1].fee2"
            }
          }
        }
      }
    }
  },
  // 第二步:根据业务规则计算finalFee,优先取fee1,fee1为空则取fee2
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "school": {
        "*": {
          "finalFee": "=ifEmpty(@(1,fee1), @(1,fee2))"
        }
      }
    }
  },
  // 第三步:移除不需要的fee1、fee2字段,保留目标结构
  {
    "operation": "shift",
    "spec": {
      "school": {
        "*": {
          "schoolCode": "school.[&1].schoolCode",
          "finalFee": "school.[&1].finalFee"
        }
      }
    }
  }
]

规则说明

  1. Shift操作(第一步):遍历school数组内的对象,将schoolCode、fee1、fee2数组的对应索引元素映射到同一个子对象中,确保每个学校的三个字段一一匹配。
  2. Modify操作(第二步):使用ifEmpty函数判断fee1是否为空,若为空则取fee2的值,否则保留fee1的值,赋值给finalFee,完全匹配业务场景要求。
  3. Shift操作(第三步):仅保留schoolCode和finalFee字段,移除临时生成的fee1、fee2,得到预期的输出结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:27:20