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

JOLT转换中itemTotalAmount字段未成功赋值的技术求助

JOLT计算字段不显示问题解决

我用JOLT工具处理JSON,想要把输入里的PRICE_PO和QTY_PO相乘,结果存入itemTotalAmount字段,但这个字段始终没出现在输出里。

输入JSON

{
  "PURCHASE_ORDER_DISPATCH": {
    "MsgData": {
      "Transaction": {
        "PO_POD_HDR_EVW1": {
          "PO_POD_LN_EVW1": {
            "PO_POD_SHP_EVW1": {
              "PRICE_PO": 14.99,
              "QTY_PO": 1
            }
          }
        }
      }
    }
  }
}

当前使用的JOLT规格

[
  {
    "operation": "shift",
    "spec": {
      "PURCHASE_ORDER_DISPATCH": {
        "MsgData": {
          "Transaction": {
            "PO_POD_HDR_EVW1": {
              "PO_POD_LN_EVW1": {
                "PO_POD_SHP_EVW1": {
                  "PRICE_PO": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.marketPrice",
                  "QTY_PO": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.itemQuantity",
                  "e($.PRICE_PO * $.QTY_PO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.itemTotalAmount"
                }
              }
            }
          }
        }
      }
    }
  }
]

期望输出

{
 "integration-inbound:IntegrationDetails": {
   "integrationEntities": {
     "integrationEntity": {
       "integrationEntityDetails": {
         "poDetails": {
           "items": {
             "item": {
               "marketPrice": 14.99,
               "itemQuantity": 1,
               "itemTotalAmount":14.99
             }
           }
         }
       }
     }
   }
 }
}

问题原因及修正方案

shift操作仅负责字段映射,不支持数值计算逻辑。要实现乘法计算,需拆分步骤:先用modify-overwrite-beta操作完成数值运算,再通过shift映射到目标结构。

修正后的JOLT规格:

[
  // 第一步:提取需要计算的字段到根节点
  {
    "operation": "shift",
    "spec": {
      "PURCHASE_ORDER_DISPATCH": {
        "MsgData": {
          "Transaction": {
            "PO_POD_HDR_EVW1": {
              "PO_POD_LN_EVW1": {
                "PO_POD_SHP_EVW1": {
                  "PRICE_PO": "PRICE_PO",
                  "QTY_PO": "QTY_PO"
                }
              }
            }
          }
        }
      }
    }
  },
  // 第二步:执行乘法计算生成目标字段
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "itemTotalAmount": "=multiply(@(1,PRICE_PO),@(1,QTY_PO))"
    }
  },
  // 第三步:将所有字段映射到期望的输出结构
  {
    "operation": "shift",
    "spec": {
      "PRICE_PO": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.marketPrice",
      "QTY_PO": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.itemQuantity",
      "itemTotalAmount": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.itemTotalAmount"
    }
  }
]

步骤说明

  1. 第一个shift操作:把需要参与计算的字段提取到根节点,简化后续计算的路径引用;
  2. modify-overwrite-beta操作:调用=multiply()函数完成两个数值的相乘,生成itemTotalAmount字段;
  3. 最后一个shift操作:将所有字段(包括计算后的字段)映射到最终的输出结构中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:20:33