如何在JOLT中实现当WG_SHIP_ADDR_TYPE为2时的字段映射?
JOLT条件映射实现:当WG_SHIP_ADDR_TYPE为2时映射地址字段
完全可行,JOLT的Shift转换支持通过值匹配语法实现条件逻辑,以下是满足需求的转换规范(spec)及说明:
转换Spec
[ { "operation": "shift", "spec": { "PURCHASE_ORDER_DISPATCH": { "MsgData": { "Transaction": { "PO_POD_HDR_EVW1": { "PO_POD_LN_EVW1": { "PO_POD_SHP_EVW1": { "WG_SHIP_ADDR_TYPE": { "2": { "@2,DESCR_SHIPTO": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressName", "@2,ADDRESS1_SHIPTO": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressLine" } }, "#UPSERT": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityHeader.action" } } } } } } } } ]
关键逻辑说明
- 条件匹配:通过
WG_SHIP_ADDR_TYPE节点下的"2"子节点实现精准值匹配,只有当该字段值为2时,才会触发内部的地址字段映射。 - 层级回溯取值:
@2,DESCR_SHIPTO中的@2代表向上回溯2层(从当前的"2"节点回到PO_POD_SHP_EVW1层级),从而获取同层级的DESCR_SHIPTO和ADDRESS1_SHIPTO字段值。 - 固定字段映射:
#UPSERT是硬编码的常量值,直接映射到输出的action字段,不受条件限制。如果需要仅当条件满足时才生成整个输出结构,可将#UPSERT移动到"2"节点内部。
验证结果
将你提供的输入JSON与上述Spec一起运行,将得到完全符合预期的输出。若WG_SHIP_ADDR_TYPE不为2,则shipToAddress相关字段不会被生成,仅保留action字段(若调整了spec则整个结构不会生成)。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

