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

Mule中JSON Schema Validator未按if-then-else规则校验schema问题

问题根因排查
  • 第一优先级排查$schema配置错误:Draft 07 版本JSON Schema的官方标准声明地址为http://json-schema.org/draft-07/schema#,你当前的配置缺少路径分隔符,误写为draft-07schema#,会导致校验器无法正确识别Schema版本。而if-then-else是Draft 07才正式引入的语法,版本识别错误会直接导致条件校验块被全局忽略,这是你遇到问题的最常见原因。
  • 可选补充必填校验规则:如果你要求postal_code为必传字段,需要在then和else块中分别添加"required": ["postal_code"]配置,否则当请求不传该字段时也会通过校验,不符合大多数业务场景的预期。
  • 若修正$schema后问题仍存在,才说明你使用的JSON校验器不支持Draft 07的条件语法,可更换支持Draft 07及以上版本的校验器解决。
修正后的完整Schema示例
{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "description": "Create Orders Schema",
    "type": "object",
    "properties": {
        "street_address": {
            "type": "string"
        },
        "country": {
            "default": "United States of America",
            "enum": ["United States of America", "Canada"]
        }
    },
    "if": {
        "properties": { "country": { "const": "United States of America" } }
    },
    "then": {
        "properties": { "postal_code": { "pattern": "[0-9]{5}(-[0-9]{4})?" } },
        "required": ["postal_code"]
    },
    "else": {
        "properties": { "postal_code": { "pattern": "[A-Z][0-9][A-Z] [0-9][A-Z][0-9]" } },
        "required": ["postal_code"]
    }
}

修正后传入你给出的无效payload,校验器会正确触发Canada对应的邮编格式校验,返回格式不匹配的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:36:02