我正在尝试编写一个模式来验证这种类型的 json
{
"Steps": {
"0": {
"something": "something"
},
"1": {
"something": "something"
}
}
}
有约束: 1:Steps可以为空,即{"Steps":{}}即可 2:键值可以是0到99。 3:如果Steps不为空,则其中必须有key 0。
我已使用patternProperties 对键名称应用约束(约束2)
{
"Steps": {
"patternProperties": {
"^[0-9]$|^[1-9][0-9]$": {
"type": "object",
"$ref": "#/$defs/StepDetails"
}
},
"additionalProperties": false
}
}
但是我不知道如何应用上面的约束3。我不想无条件地要求属性“0”,因为这会干扰我的约束号 1,所以我如何指定“如果步骤中的属性计数 > 0,则需要属性“0””
谢谢,
我想 minProperties 和 maxProperties 在这里没有用。
这似乎有效,但我希望有一个更优雅的 if-then 类型的解决方案
{
"Steps": {
"patternProperties": {
"^[0-9]$|^[1-9][0-9]$": {
"type": "object",
"$ref": "#/$defs/StepDetails"
}
},
"additionalProperties": false,
"anyOf": [
{
"required": [
"0"
]
},
{
"maxProperties": 0
}
]
}
}