You need to enable JavaScript to run this app. JSON Schema跨层级依赖:嵌套字段存在时要求上层同级字段必填
优惠活动
大模型
产品
解决方案
定价
更多

JSON Schema跨层级依赖:嵌套字段存在时要求上层同级字段必填

JSON Schema跨层级依赖校验解决方案

要实现嵌套层级字段触发上层同级字段必填的校验规则,可使用JSON Schema(draft-07及以上版本)内置的if-then条件校验语法,不受同级字段限制,灵活性远高于仅支持同级依赖的dependencies语法。


完整校验Schema代码

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "billing_address": { "type": "string" },
    "payment_details": {
      "type": "object",
      "properties": {
        "credit_card": { "type": "number" }
      }
    }
  },
  "required": ["name"],
  "if": {
    "properties": {
      "payment_details": {
        "required": ["credit_card"]
      }
    },
    "required": ["payment_details"]
  },
  "then": {
    "required": ["billing_address"]
  }
}

规则说明

  • if分支为触发条件:仅当根对象存在payment_details字段,且payment_details对象中存在credit_card字段时,才会触发后续校验规则
  • then分支为触发后的要求:满足if条件时,根对象必须包含billing_address字段,也可在此处补充billing_address的额外校验规则(如格式限制、长度要求等)
  • 不满足if条件时(无payment_details或payment_details中无credit_card),then分支规则不生效,billing_address为非必填项

验证场景示例

  • 合法场景1:存在payment_details.credit_card,同时提供了billing_address,校验通过
  • 合法场景2:不存在payment_details.credit_card,无论是否提供billing_address,校验均通过
  • 非法场景:存在payment_details.credit_card,但未提供billing_address,校验失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 23:30:04