如果定义中不存在所需的属性,有什么方法可以忽略它properties
?
例如:
{
"type": "object",
"properties": {
"billingAddress": {
"type": "string"
},
"isSameAsBillingAddress": {
"type": "boolean"
}
// Say I deleted the `mailingAddress` property
},
"required": [
"billingAddress",
"isSameAsBillingAddress",
"mailingAddress" // ignore
]
}
根据我的理解,这似乎是不可能的。我知道这是一个愚蠢的问题,因为有人可能会说只是从required
数组中删除属性名称,但是当我生成这个 JSON 模式并且还希望有条件地需要一个字段(如果存在)时,它变得有点复杂。
例如:
{
"type": "object",
"properties": {
"billingAddress": {
"type": "string"
},
"isSameAsBillingAddress": {
"type": "boolean"
}
// Delete `mailingAddress` property
},
"required": [
"billingAddress",
"isSameAsBillingAddress"
],
"oneOf": [
{
"properties": {
"isSameAsBillingAddress": {
"enum": [true]
}
}
},
{
"properties": {
"isSameAsBillingAddress": {
"enum": [false]
}
},
// Would like to ignore...
"required": ["mailingAddress"]
},
]
}
是的,如果属性被删除,我可以编写一些代码返回并清理此架构mailingAddress
,但我想知道是否有一些 JSON 架构方式可以智能地忽略 undefined properties
?
同样从 JSON 模式生成器的角度来看,似乎有太多的地方可能隐藏了一个属性名称,因此任何关于如何在代码可以轻松清理和生成连贯 JSON 模式的地方构建它的建议也将不胜感激。