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

协助排查Jolt转换Spec错误,实现预期JSON格式转换

Jolt转换规则错误排查与修正

输入JSON

[
  {
    "external_id": 855644012615,
    "order_id": 4551472709703,
    "processed_at": "2022-08-30T02:40:26-04:00",
    "tracking_number": 4.201110410179302e+24,
    "refund_line_items": [
      {
        "order_line_item_id": 11544859803719,
        "quantity": 6,
        "line_item": {
          "name": "FLORENCIA RED MULTI - RED MULTI / 6 / 634",
          "product_id": 6586562773063,
          "properties": [
            {
              "name": "UPCA",
              "value": "195945037714"
            }
          ]
        }
      }
    ]
  }
]

预期输出

[ 
  {
    "externalId" : 855644012615,
    "orderExternalId" : 4551472709703,
    "partyIdFrom" : "NA",
    "destinationFacilityId" : "",
    "partyIdTo" : "NA",
    "status" : "PURCH_SHIP_CREATED",
    "type" : "SALES_RETURN",
    "estimatedShipCost" : "0",
    "packages" : [ 
      {
        "packageSeqId" : "",
        "trackingCode" : 4.201110410179302E24,
        "items" : [ 
          {
            "sku" : "195945037714",
            "quantity" : 6
          } 
        ]
      } 
    ]
  } 
]

当前使用的Jolt转换规则

[
  {
    "operation": "default",
    "spec": {
      "*": {
        "partyIdFrom": "_NA_",
        "destinationFacilityId": "",
        "externalPartyIdFrom": "",
        "partyIdTo": "_NA_",
        "status": "PURCH_SHIP_CREATED",
        "type": "SALES_RETURN",
        "estimatedShipCost": "0",
        "packageSeqId": ""
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "external_id": "[&1].externalId",
        "order_id": "[&1].orderExternalId",
        "partyIdFrom": "[&1].partyIdFrom",
        "destinationFacilityId": "[&1].destinationFacilityId",
        "partyIdTo": "[&1].partyIdTo",
        "status": "[&1].status",
        "type": "[&1].type",
        "estimatedShipCost": "[&1].estimatedShipCost",
        "packageSeqId": "[&1].packages[&1].packageSeqId",
        "tracking_number": "[&1].packages[&1].trackingCode",
        "refund_line_items": {
          "*": {
            "quantity": "[&2].packages[#5].items[&3].quantity",
            "line_item": {
              "properties": {
                "*": {
                  "value": "[&6].packages[#4].items[&1].sku"
                }
              }
            }
          }
        }
      }
    }
  }
]

错误分析

  1. 默认值不匹配:partyIdFrom和partyIdTo设置为"_NA_",但预期输出是"NA",多了下划线。
  2. packages数组索引错误:shift操作中用[&1]作为packages的索引,会对应外层数组的元素索引,而每个订单仅对应一个package,应该用固定索引[0]避免索引混乱。
  3. 层级引用计算错误:refund_line_items下的quantity和sku路径使用了错误的相对层级符号(如[#5]、[&6]),导致无法正确映射到packages下的items数组。

修正后的Jolt转换规则

[
  {
    "operation": "default",
    "spec": {
      "*": {
        "partyIdFrom": "NA",
        "destinationFacilityId": "",
        "partyIdTo": "NA",
        "status": "PURCH_SHIP_CREATED",
        "type": "SALES_RETURN",
        "estimatedShipCost": "0",
        "packageSeqId": ""
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "external_id": "[&1].externalId",
        "order_id": "[&1].orderExternalId",
        "partyIdFrom": "[&1].partyIdFrom",
        "destinationFacilityId": "[&1].destinationFacilityId",
        "partyIdTo": "[&1].partyIdTo",
        "status": "[&1].status",
        "type": "[&1].type",
        "estimatedShipCost": "[&1].estimatedShipCost",
        "packageSeqId": "[&1].packages[0].packageSeqId",
        "tracking_number": "[&1].packages[0].trackingCode",
        "refund_line_items": {
          "*": {
            "quantity": "[&2].packages[0].items[&1].quantity",
            "line_item": {
              "properties": {
                "*": {
                  "value": "[&5].packages[0].items[&3].sku"
                }
              }
            }
          }
        }
      }
    }
  }
]

修正说明

  1. 调整default操作里的partyIdFrom和partyIdTo值为"NA",去掉多余下划线。
  2. 将packages数组的索引固定为[0],确保每个订单对应唯一的package对象。
  3. 修正refund_line_items下的相对路径:
    • quantity路径改为[&2].packages[0].items[&1].quantity,&2回到外层订单对象层级,&1对应refund_line_items的元素索引。
    • sku路径改为[&5].packages[0].items[&3].sku,&5回到外层订单对象层级,&3对应refund_line_items的元素索引,确保和quantity映射到同一个items元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:15:39