如何编写JSON Schema限制字符串仅为三个指定可选值
JSON Schema 固定字符串取值约束实现方案
针对你需要限定fruit字段仅能取三个固定字符串的需求,有两种实现方式,其中enum关键字方案为更推荐的标准实现:
方案1:使用enum关键字(推荐)
enum是JSON Schema专门用于限定字段取值为固定集合的语法,语义清晰、校验效率更高,完全适配draft 2020-12版本规范。你只需要在fruit字段的属性定义中补充enum配置即可,修改后的完整Schema如下:
{ "$id": "https://example.com/person.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "TestSession", "type": "object", "properties": { "fruit": { "type": "string", "description": "only three legal possibilities: apple, banana, or coconut", "enum": ["apple", "banana", "coconut"] } } }
注意:请确认枚举值的拼写和业务要求完全一致,若你需求里的
bananna是正确拼写,将枚举值里的banana对应修改即可。
方案2:使用正则校验(仅适合需要模糊匹配的场景)
如果你确实需要通过正则实现约束,可使用pattern关键字声明正则规则,注意要添加开头^和结尾$锚点,避免匹配到包含目标字符串的其他非法值,配置示例如下:
"fruit": { "type": "string", "description": "only three legal possibilities: apple, banana, or coconut", "pattern": "^(apple|banana|coconut)$" }
两种方案的差异:
enum方案:无额外学习成本,不会出现正则语法错误,固定取值场景优先选择- 正则方案:灵活度更高,适合需要部分匹配、模糊匹配的非固定枚举场景,编写时需要注意转义特殊字符、补充边界锚点
内容的提问来源于stack exchange,提问作者simgineer
相关产品推荐
相关产品推荐

