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

JOLT大小写不敏感包含匹配转换报错问题排查与需求实现

解决JOLT转换报错并实现需求的JSON转换逻辑

问题分析

原JOLT Spec报错的原因是Shift操作中错误使用|组合多个匹配模式,JOLT不支持这种语法。同时原逻辑也不符合需求——需求要求同时匹配两组关键词,而非单个关键词匹配。

正确的JOLT转换规则

[
  // 1. 统一转为小写,消除大小写敏感问题
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "type": "=toLower",
      // 标记是否包含mnl/manual类关键词
      "hasManual": "=contains(@(1,type), 'mnl') ||=contains(@(1,type), 'manual')",
      // 标记是否包含credit
      "hasCredit": "=contains(@(1,type), 'credit')",
      // 标记是否包含debit
      "hasDebit": "=contains(@(1,type), 'debit')"
    }
  },
  // 2. 根据标记字段的组合设置最终type值
  {
    "operation": "shift",
    "spec": {
      // 同时包含manual类关键词和credit
      "hasManual": {
        "true": {
          "@(2,hasCredit)": {
            "true": {
              "#MANUAL_CREDIT": "type"
            }
          }
        }
      },
      // 同时包含manual类关键词和debit
      "hasManual": {
        "true": {
          "@(2,hasDebit)": {
            "true": {
              "#MANUAL_DEBIT": "type"
            }
          }
        }
      },
      // 默认匹配所有其他场景
      "*": {
        "#MANUAL_PAYMENT": "type"
      }
    }
  },
  // 3. 清理辅助标记字段(可选,按需保留)
  {
    "operation": "remove",
    "spec": {
      "hasManual": "",
      "hasCredit": "",
      "hasDebit": ""
    }
  }
]

规则说明

  1. Modify阶段:

    • 将type转为全小写,统一匹配规则
    • 新增三个布尔辅助字段,分别标记type是否包含目标关键词组
  2. Shift阶段:

    • 优先匹配hasManual=true且hasCredit=true的场景,输出MANUAL_CREDIT
    • 其次匹配hasManual=true且hasDebit=true的场景,输出MANUAL_DEBIT
    • 最后用通配符*兜底,输出默认值MANUAL_PAYMENT
  3. Remove阶段:

    • 删除辅助标记字段,仅保留最终的type结果

测试验证

  • 输入:{"type": "my Mnl"} → 输出:{"type": "MANUAL_PAYMENT"}
  • 输入:{"type": "Credit mnl String"} → 输出:{"type": "MANUAL_CREDIT"}
  • 输入:{"type": "My Manual Debit"} → 输出:{"type": "MANUAL_DEBIT"}
  • 输入:{"type": "random string"} → 输出:{"type": "MANUAL_PAYMENT"}

内容的提问来源于stack exchange,提问作者Prasad S Deshpande

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:15:17