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

基于success字段的Jolt转换规则优化咨询

优化Jolt转换规则以适配success状态输出

我尝试了以下Jolt转换规则,但目前仅能显示message和error字段,其余字段无法正常输出。现需优化该规则,使其根据success字段的true/false状态生成符合要求的输出结构:

原Jolt转换规则

[
  {
    "operation": "shift",
    "spec": {
      "response": {
        "success": {
          "true": {
            "#false": "error",
            "@(2,message)": "info_message",
            "series": "body.offer_series",
            "number": "body.offer_number",
            "end_date": "body.policy_end_date",
            "expiry_date": "body.offer_expiration_date",
            "commission": "body.commission.commission_amount",
            "premium_net": "body.premium.net_premium.amount",
            "total_premium": "body.premium.amount",
            "installments": {
              "*": {
                "number": "body.premium.installments[&1].number",
                "value": "body.premium.installments[&1].amount",
                "currency": "body.premium.installments[&1].currency",
                "due_date": "body.premium.installments[&1].due_date"
              }
            }
          },
          "false": {
            "*": {
              "*": "body.error_message"
            }
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "body": {
        "good_id": "=toInteger"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "error_message": "=join(' | ',@(1,&))"
      }
    }
  }
]

场景1:success=true

输入

{
  "response": {
    "success": true,
    "data": {
      "series": "XX/32/V32/LM",
      "number": 8015,
      "end_date": "14/01/2024",
      "premium": 10192.05,
      "premium_net": 8969,
      "commission": 12,
      "installments": [
        {
          "number": 1,
          "value": 11007.41,
          "currency": "RON",
          "due_date": "05/01/2023"
        }
      ],
      "total_premium": 11007.41,
      "reference_premium": 1994,
      "direct_settlement_cover": 1,
      "direct_settlement": 815.36,
      "direct_settlement_net": 717.52,
      "bm": "B0",
      "exclusion_countries": [
        "BY",
        "IL",
        "IR",
        "MA",
        "RUS",
        "TN",
        "UA"
      ],
      "expiry_date": "04/02/2023",
      "appendix": false
    },
    "message": "Oferta a fost emisă cu succes"
  }
}

期望输出

{
  "error" : "false",
  "body" : {
    "offer_series" : "XX/32/V32/LM",
    "offer_number" : 8015,
    "policy_end_date" : "14/01/2024",
    "offer_expiration_date" : "04/02/2023",
    "commission" : {
      "commission_amount" : 12
    },
    "premium" : {
      "net_premium" : {
        "amount" : 8969
      },
      "amount" : 11007.41,
      "installments" : [ {
        "number" : 1,
        "amount" : 11007.41,
        "currency" : "RON",
        "due_date" : "05/01/2023"
      } ]
    }
  }
}

场景2:success=false

输入

{
  "response": {
    "success": false,
    "message": "Eroare validare date",
    "data": {
      "driver.0.name": [
        "Trebuie să menționați nume/denumire pentru șofer"
      ],
      "driver.1.name": [
        "Trebuie să menționați nume/denumire pentru șofer"
      ],
      "driver.1tin": [
        "CNP/CUI invalid pentru șofer"
      ],
      "vehicle.card": [
        "Serie CIV invalidă pentru vehiculul asigurat"
      ]
    }
  }
}

期望输出

{
  "body" : {
    "info_message" : "Eroare validare date",
    "error_message" : "Trebuie să menționați nume/denumire pentru șofer | Trebuie să menționați nume/denumire pentru șofer | CNP/CUI invalid pentru șofer | Serie CIV invalidă pentru vehiculul asigurat"
  }
}

优化后的Jolt转换规则

[
  {
    "operation": "shift",
    "spec": {
      "response": {
        "success": {
          "true": {
            "#false": "error",
            "@(2,message)": "body.info_message",
            "@(2,data)": {
              "series": "body.offer_series",
              "number": "body.offer_number",
              "end_date": "body.policy_end_date",
              "expiry_date": "body.offer_expiration_date",
              "commission": "body.commission.commission_amount",
              "premium_net": "body.premium.net_premium.amount",
              "total_premium": "body.premium.amount",
              "installments": {
                "*": {
                  "number": "body.premium.installments[&1].number",
                  "value": "body.premium.installments[&1].amount",
                  "currency": "body.premium.installments[&1].currency",
                  "due_date": "body.premium.installments[&1].due_date"
                }
              }
            }
          },
          "false": {
            "@(2,message)": "body.info_message",
            "@(2,data)": {
              "*": {
                "*": "body.error_message[]"
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "body": {
        "error_message": "=join(' | ',@(1,&))"
      }
    }
  }
]

优化说明

  1. success=true分支修正:原规则未正确从response.data下提取字段,优化后通过@(2,data)定位到数据层,确保所有业务字段能正确映射到目标结构。
  2. success=false分支调整:
    • 将response.message映射为body.info_message,符合输出要求;
    • 用body.error_message[]收集所有错误信息数组,后续通过join合并为指定格式的字符串;
  3. 移除无用操作:删除了原规则中未用到的good_id转换操作,精简规则逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:55:26