假设我想将JSON对象限制为整数> 42或这样的整数数组。
有效的draft-04架构
{
"minimum" : 42,
"items" : { "type":"integer", "minimum" : 42 }
}
验证42
和[52, 62]
以及"hello"
。所以构建模式的方法是错误的。
除了正确的架构包含多余的"类型"字段,因为" items"暗示数组类型:
{
"oneOf": [
{
"type": "integer",
"minimum" : 42
},
{
"type": "array",
"items" : { "type":"integer", "minimum" : 42 }
}
]
}
同时允许不同类型约束的原因是什么?
这是一个糟糕的设计还是我只是错过了什么?
答案 0 :(得分:1)
https://github.com/json-schema/json-schema/issues/172
此链接的讨论应该有助于您了解它的工作方式。简短版本是JSON Schema设计简单,一致且灵活。这些特性允许在模式中具有更强的表现力,但它也允许您编写您可能不应该创建的模式。在链接讨论结束时,我举一些例子说明这种表达方式是如何有用的,如果收紧一些粗糙的边缘,JSON Schema会变得不那么优雅。