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

如何用JSON Schema验证指定属性缺失及prop1仅含空白字符

符合要求的JSON Schema实现方案

核心验证规则回顾

仅当满足以下所有条件时,JSON对象验证通过:

  • prop1必须存在,且其值仅包含空白字符(空格、制表符、换行符等)
  • prop2和prop3必须完全缺失

方案一:严格限制属性范围

该方案直接禁止除prop1外的任何其他属性,完全匹配需求场景:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["prop1"],
  "properties": {
    "prop1": {
      "type": "string",
      "pattern": "^\\s*$"
    }
  },
  "additionalProperties": false,
  "maxProperties": 1
}

关键字说明

  • required: ["prop1"]:强制要求prop1必须存在,满足规则基础前提
  • prop1.pattern: "^\\s*$":用正则匹配仅含空白字符的字符串(包括空字符串),确保prop1的值符合要求
  • additionalProperties: false:禁止出现Schema未定义的属性,直接拦截prop2、prop3这类额外属性
  • maxProperties: 1:限制对象只能有1个属性,进一步确保不会出现prop2或prop3

方案二:精准拦截指定属性

如果允许对象包含prop1之外的其他属性(仅需确保prop2、prop3缺失),可以用not+anyOf组合实现:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["prop1"],
  "properties": {
    "prop1": {
      "type": "string",
      "pattern": "^\\s*$"
    }
  },
  "not": {
    "anyOf": [
      { "required": ["prop2"] },
      { "required": ["prop3"] }
    ]
  }
}

关键字说明

  • not.anyOf:只要anyOf中任意一个条件成立(即prop2存在,或prop3存在),验证就会失败,刚好实现"prop2、prop3均缺失"的要求

验证效果测试

针对你提供的测试数组:

  1. 第一个对象包含prop2和prop3,两种Schema都会验证失败
  2. 第二个对象仅含符合要求的prop1,两种Schema都会验证通过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:40:07