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

使用JOLT cardinality-MANY转换PO_POD_LN_EVW1为列表及报错排查

问题描述

需求:编写JOLT定义,使用cardinality-MANY将对象PO_POD_LN_EVW1转换为列表,若该对象已是列表则忽略。

输入JSON:

{
  "PURCHASE_ORDER_DISPATCH": {
    "MsgData": {
      "Transaction": {
        "PSCAMA": {
          "PUBLISH_RULE_ID": {
            "IsChanged": "Y"
          }
        },
        "PO_POD_HDR_EVW1": {
          "STATE_BILL": "",
          "CURRENCY_CD": {
            "IsChanged": "Y",
            "content": "USD"
          },
          "ADDRESS4_VNDR": "",
          "PO_POD_LN_EVW1": {
            "WG_ACCOUNT": 641100,
            "LINE_NBR": {
              "IsChanged": "Y",
              "content": 1
            },
            "ITM_ID_VNDR": "B0798CX2Q9",
            "PO_POD_SHP_EVW1": {
              "LINE_NBR": {
                "IsChanged": "Y",
                "content": 1
              }
            }
          },
          "WG_ADDR_SEQ_NUM": 1
        }
      }
    }
  }
}

当前使用的JOLT Spec:

{
  "operation": "cardinality",
  "spec": {
    "PURCHASE_ORDER_DISPATCH": {
      "MsgData": {
        "Transaction": {
          "PO_POD_HDR_EVW1": "MANY"
        }
      }
    }
  }
}

执行错误:Failed to Transform


解决方案

错误分析

当前Spec存在两个核心问题:

  1. 目标字段定位错误:需求要处理的是PO_POD_LN_EVW1,但Spec错误地给父对象PO_POD_HDR_EVW1设置了MANY规则
  2. 对非数组的父对象直接应用MANY规则会破坏原有JSON结构,导致转换失败

修正后的JOLT Spec

精准定位到PO_POD_LN_EVW1字段,为其应用MANY规则:

[
  {
    "operation": "cardinality",
    "spec": {
      "PURCHASE_ORDER_DISPATCH": {
        "MsgData": {
          "Transaction": {
            "PO_POD_HDR_EVW1": {
              "PO_POD_LN_EVW1": "MANY"
            }
          }
        }
      }
    }
  }
]

转换效果

执行后,单个对象类型的PO_POD_LN_EVW1会被自动转换为数组;如果输入中该字段已是数组,则保持原结构不变。转换后的结果如下:

{
  "PURCHASE_ORDER_DISPATCH": {
    "MsgData": {
      "Transaction": {
        "PSCAMA": {
          "PUBLISH_RULE_ID": {
            "IsChanged": "Y"
          }
        },
        "PO_POD_HDR_EVW1": {
          "STATE_BILL": "",
          "CURRENCY_CD": {
            "IsChanged": "Y",
            "content": "USD"
          },
          "ADDRESS4_VNDR": "",
          "PO_POD_LN_EVW1": [
            {
              "WG_ACCOUNT": 641100,
              "LINE_NBR": {
                "IsChanged": "Y",
                "content": 1
              },
              "ITM_ID_VNDR": "B0798CX2Q9",
              "PO_POD_SHP_EVW1": {
                "LINE_NBR": {
                  "IsChanged": "Y",
                  "content": 1
                }
              }
            }
          ],
          "WG_ADDR_SEQ_NUM": 1
        }
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 01:20:19