这应该是一个非常快的是或否,但我还没有能够在SO或其他地方找到答案。我想制作一组模式,其中包含一个以entity
模式为基础的良好的分层依赖方案。我想要的架构是
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "entity",
"type": "object",
"patternProperties": {
"^.+Id$": {
"type": "string"
}
},
"required": [
"^.+Id$"
]
}
基本上,我希望每个实体(例如Person)都需要一个名为somethingId
的字段(对于人,可能是personId
)。但是,使用" required"以这种方式似乎强制一个名为"^.+Id$"
的实际字段,而不是该对象必须有一个匹配该模式的字段。有没有办法在这里做我想要的?
提前致谢。
答案 0 :(得分:1)
正如您在评论中提到的那样,您无法在必需条款中强制执行动态属性键。
但是,如果您可以允许嵌套定义,则可以按如下方式对标识符进行建模:
{
"properties" : {
"identifier" : {
"additionalProperties" : false,
"minProperties" : 1,
"maxProperties" : 1,
"patternProperties" : "^.+Id$ "
}
},
"required": ["identifier"]
}
这样,您的标识符必须具有唯一属性,并且密钥会验证您的正则表达式。
答案 1 :(得分:0)
这可以在不使用此架构更改数据结构的情况下实现:
{
"patternProperties" : {
"^.+Id$": {
"type": "string"
}
},
"minProperties": 1,
"additionalProperties": false
}