如何描述属性的互斥值?
How do I describe mutually exclusive values of properties?
我有两个属性(propOne 和 propTwo)。
如果其中一个属性值为 true,则另一个必须设置为 false。
如何在 jsonschema 中描述它?
我可以说如果 propOne 是真的需要 propTwo,但这还不够:
"anyOf": [
{
"not": {
"properties": {
"propOne": {
"const": true
}
},
"required": [
"propOne"
]
}
},
{
"required": [
"propTwo"
]
}
],
描述我的要求最简洁的方式是什么?
编辑:
根据答案,这就是我想要的。我知道有几种方法可以描述这一点。好像oneOf是最简洁的?我想如果条件需要更多行?
"oneOf": [
{
"type": "object",
"properties": {
"propOne": {
"const": true
},
"propTwo": {
"const": false
}
}
},
{
"type": "object",
"properties": {
"propOne": {
"const": true
},
"propTwo": {
"const": false
}
}
}
],
有if/then/else个关键字,还有oneOf(见https://json-schema.org/understanding-json-schema/reference/conditionals.html)
所以,在伪代码中:
- 必须是对象。
- 需要 propOne 和 propTwo。
- propOne 是一个布尔值。
- propTwo 是一个布尔值。
并且其中任何一个是等价的(当与上述限制相结合时):
- 如果 propOne 为真,则 propTwo 为假,否则 propTrue 为真。
- 其中之一:
- propOne 为真,propTwo 为假。
- propOne 为假,propTwo 为真。
我有两个属性(propOne 和 propTwo)。
如果其中一个属性值为 true,则另一个必须设置为 false。
如何在 jsonschema 中描述它?
我可以说如果 propOne 是真的需要 propTwo,但这还不够:
"anyOf": [
{
"not": {
"properties": {
"propOne": {
"const": true
}
},
"required": [
"propOne"
]
}
},
{
"required": [
"propTwo"
]
}
],
描述我的要求最简洁的方式是什么?
编辑: 根据答案,这就是我想要的。我知道有几种方法可以描述这一点。好像oneOf是最简洁的?我想如果条件需要更多行?
"oneOf": [
{
"type": "object",
"properties": {
"propOne": {
"const": true
},
"propTwo": {
"const": false
}
}
},
{
"type": "object",
"properties": {
"propOne": {
"const": true
},
"propTwo": {
"const": false
}
}
}
],
有if/then/else个关键字,还有oneOf(见https://json-schema.org/understanding-json-schema/reference/conditionals.html)
所以,在伪代码中:
- 必须是对象。
- 需要 propOne 和 propTwo。
- propOne 是一个布尔值。
- propTwo 是一个布尔值。
并且其中任何一个是等价的(当与上述限制相结合时):
- 如果 propOne 为真,则 propTwo 为假,否则 propTrue 为真。
- 其中之一:
- propOne 为真,propTwo 为假。
- propOne 为假,propTwo 为真。