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

如何编写JSON Schema实现依赖字段值的嵌套结构条件校验

条件必填场景JSON Schema实现方案

你可以使用JSON Schema的if/then/else条件逻辑关键字实现该需求,完整的校验Schema如下:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["kind"],
  "properties": {
    "kind": {
      "type": "string"
    },
    "contact": {
      "type": "object",
      "properties": {
        "mail": { "type": "string", "format": "email" },
        "name": { "type": "string" },
        "street": { "type": "string" }
      },
      "additionalProperties": false
    }
  },
  "if": {
    "properties": {
      "kind": { "const": "new" }
    }
  },
  "then": {
    "required": ["contact"],
    "properties": {
      "contact": {
        "required": ["mail"]
      }
    }
  }
}
规则匹配说明
  • 通用基础校验:全局定义kind为必填字符串字段,contact内部所有字段的类型校验统一放在公共属性定义中,只要请求中出现对应字段就会自动校验类型,无需重复定义。
  • kind不为"new"场景:if条件不命中,不会触发then分支的额外约束,此时contact为非必填项,若提交时携带contact对象,仅校验内部字段的类型,不校验必填性,符合需求。
  • kind为"new"场景:if条件命中,触发then分支的约束,强制要求contact为必填项,且contact内部的mail为必填项,其余字段无必填要求但仍会校验类型,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:09:02