如何以规范方式禁止空字符串作为属性值?替代minLength:1的声明式方案
实现JSON Schema中字符串属性的非空声明(类似HTML的required)
JSON Schema本身没有像HTML required那样直接对应“字符串非空”的关键字,但可以用以下更具声明性的写法替代minLength: 1,语义更清晰:
方式一:用not + enum明确排除空字符串
这种写法直接表达“属性值不能是空字符串”的约束,比minLength: 1更直观,符合你想要的声明性需求。修改后的Schema如下:
{ "type": "object", "patternProperties": { "^(?:num|str|text|check|bool)[1-3]$": { "type": "string", "maxLength": 50, "not": { "enum": [""] } } }, "additionalProperties": false }
补充说明
注意JSON Schema里的required关键字是用来指定必须存在的属性,和你要的“属性值非空”是两个概念。上面的写法是目前最接近HTML required(对应输入框非空)语义的实现方式,能清晰传达“字符串不能为空”的约束意图。
内容的提问来源于stack exchange,提问作者kilimanjaro
相关产品推荐
相关产品推荐

