我有一个具有动态键名称的对象,我想描述键可以具有的值模式,即:
{
"properties": {
"usersById": {
"additionalProperties": {
"properties": {
"email": {
"type": "boolean"
},
"phone": {
"type": "boolean"
},
"address": {
"type": "boolean"
}
},
"type": "object"
},
"type": "object"
}
},
...
}
在我的验证步骤中(使用AJV JS pkg),这似乎没有做任何事情。我只想限制此模型架构:
{
usersById: {
'1234abcd': {
email: true,
phone: false,
address: false,
},
},
}
答案 0 :(得分:1)
您可以使用patternProperties
,就像properties
一样,但是您使用的是正则表达式。
https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.5.5
一个例子...
模式:
{
"type": "object",
"patternProperties": {
"^S_": { "type": "string" },
"^I_": { "type": "integer" }
},
"additionalProperties": false
}
有效实例:
{ "I_0": 42 }
无效的实例:
{ "S_0": 42 }
示例从https://json-schema.org/understanding-json-schema/reference/object.html#pattern-properties撤消
请注意,最好记住这些正则表达式不是隐式锚定的,因此,如果需要锚定的正则表达式,则需要对其进行锚定。