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

如何通过Jolt转换基于地址属性生成含固定值的地址列表?

问题解决:调整Jolt配置实现目标地址列表转换

问题分析

现有Jolt配置存在两大缺陷:

  1. 仅当officeAddress字段存在时才会生成couries项,若该字段为空、null或完全缺失,对应的地址项会被直接忽略
  2. isPrimary字段仅在officeAddress等于P时才会添加,其他场景下目标输出会缺失该字段

修正后的Jolt配置

通过两步转换可覆盖所有场景,逻辑简洁清晰:

[
  // 第一步:处理officeAddress的缺失/空值情况,设置默认值
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "address": {
        "*": {
          // 若officeAddress不存在、为空或null,默认设为"N"
          "officeAddress": ["@(1,officeAddress)", "N"]
        }
      }
    }
  },
  // 第二步:映射字段并根据officeAddress的值设置homeAddress
  {
    "operation": "shift",
    "spec": {
      "address": {
        "*": {
          // 统一映射soldAddress和硬编码的isPrimary
          "soldAddress": "couries[#1].delivery.soldAddress",
          "#true": "couries[#1].delivery.isPrimary",
          // 根据officeAddress的值分支设置homeAddress
          "officeAddress": {
            "P": {
              "#Home": "couries[#1].delivery.homeAddress"
            },
            // 匹配所有非P的情况(包括默认的N)
            "*": {
              "#Office": "couries[#1].delivery.homeAddress"
            }
          }
        }
      }
    }
  }
]

配置说明

  1. modify-overwrite-beta操作:

    • 遍历address数组中的每一项,对officeAddress字段做默认值兜底处理
    • 使用["@(1,officeAddress)", "N"]语法:如果原字段存在且不为空/null,保留原值;否则用"N"填充,确保后续shift转换能统一处理所有情况
  2. shift操作:

    • 把soldAddress直接映射到目标路径,确保每个地址项都携带该字段
    • 硬编码isPrimary为"true",统一添加到所有delivery对象中
    • 根据officeAddress的值分支判断:等于"P"时设置homeAddress为"Home",其他情况(包括默认的"N")设置为"Office"

测试验证

将示例输入代入上述配置,可精准得到期望输出:

{
  "couries": [
    {
      "delivery": {
        "homeAddress": "Home",
        "isPrimary": "true",
        "soldAddress": "N"
      }
    },
    {
      "delivery": {
        "homeAddress": "Office",
        "isPrimary": "true",
        "soldAddress": "P"
      }
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:20:56