我正在尝试为object
类型定义架构。有没有办法允许任何属性名称,但限制所有属性值以遵守某些架构。这样我可以允许任何key
并确保所有values
具有相同的结构/类型。
提前致谢。
答案 0 :(得分:2)
additionalProperties
关键字可以是布尔值,也可以是架构。
如果它是架构,那么该架构必须适用于不与properties
或patternProperties
匹配的任何属性。因此,如果您的密钥可以是任何内容,那么您的架构就是:
{
"type": "object",
"additionalProperties": {"type": "integer"}
}
如果您想限制密钥,则需要使用patternProperties
- 例如,仅限小写字母:
{
"type": "object",
"patternProperties": {
"^[a-z]+$": {"type": "object"}
},
"additionalProperties": false
}
由于您要允许任何属性名称,additionalProperties
是最适合您的解决方案。
答案 1 :(得分:1)
patternProperties
看起来像我想要的那样。
我可以简单地做
{
"type": "object",
"patternProperties": {
"*": { "type": "integer" }
},
"additionalProperties": false
}
允许任何键,并将所有值限制为整数。