You need to enable JavaScript to run this app. 如何配置JSONSchema实现可选校验:允许空对象但拒绝半填充字段数据
优惠活动
大模型
产品
解决方案
定价
更多

如何配置JSONSchema实现可选校验:允许空对象但拒绝半填充字段数据

解决方案

修改后的完整JSON Schema

{
  "$id": "https://example.com/person.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Person",
  "type": "object",
  "properties": {
    "firstName": {
      "type": "string",
      "description": "The person's first name."
    },
    "lastName": {
      "type": "string",
      "description": "The person's last name."
    },
    "age": {
      "description": "Age in years which must be equal to or greater than zero.",
      "type": "integer",
      "minimum": 0
    }
  },
  "anyOf": [
    {
      "maxProperties": 0
    },
    {
      "required": ["firstName", "lastName", "age"]
    }
  ]
}

修改逻辑说明

核心修改是移除原Schema全局的required配置,新增anyOf分支校验规则,只需命中任意一条分支即可通过校验:

  • 第一条分支maxProperties: 0:限制对象只能为空,满足空对象可正常通过的需求
  • 第二条分支保留原必填规则:要求firstName、lastName、age三个字段必须同时存在,只要对象包含任意字段,就必须同时填齐三个字段,否则校验失败,满足半填充数据拒绝的需求

校验效果验证

  • 可通过校验的场景:
    • 空对象 {}
    • 三个字段完整填写的对象:
      {
        "firstName": "John",
        "lastName": "Doe",
        "age": 21
      }
      
  • 会被拒绝的场景:
    • 仅填写1个字段的对象(如仅填firstName的示例)
    • 仅填写任意2个字段的对象

内容的提问来源于stack exchange,提问作者Işık Kaplan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 06:24:03