问题:
有没有一种方法可以告诉json模式,我想要类型x和至少一个的其他属性?
简短说明(基于下面的代码块):
我想要一个带有一个必填项 a 的json文件。 b 是可选的,我至少需要一个附加项目。 附加项目的名称必须灵活。 因此,我无法给它起一个特定的名称并按要求将其标记。 而且因为 b 是可选的,所以我无法使用'minProperties'
类似的东西(不存在)
"additionalProperties": {
"type": "string",
"minAdditionalProperties": 1
}
未完成的json模式
{
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"properties": {
"a": {
"type": "number"
},
"b": {
"type": "number"
}
},
"required": ["a"],
"additionalProperties": {
"type": "string"
}
}
预期结果:
b始终是可选的
invalid:
{
"a": 1
}
----
{
"a": 1,
"b": 2
}
valid:
{
"a": 1,
"x": "2"
}
----
{
"a": 1,
"x1": "2",
"x2": "4"
}
像这样甚至有可能吗?
答案 0 :(得分:0)
并且因为b是可选的,所以我不能使用'minProperties'
为什么不呢?当然minProperties: 2
会为您提供所需的东西:“ a”是必需的,因此还需要一个附加属性。
如果除了可选属性“ b”之外还需要其他属性,则可以使用if
/ then
/ else
:
"if": {
"required": [ "b" ]
},
"then": {
"minProperties": 3
}
"else": {
"minProperties": 2
}