当布尔值 属性 A 为真时如何要求 属性 B
How to require a property B when a boolean property A is true
使用JSON架构,当属性foo
(boolean
)是时,如何指定属性bar
是必需的设置为 true
?
我试过以下方法:
{
"type": "object",
"properties": {
"foo": { "type": "boolean" },
"bar": { "type": "string" }
},
"if": {
"properties": {
"foo": { "boolean": true }
},
"required": ["foo"]
},
"then": { "required": ["bar"] }
}
但是,这无法验证:
{
"foo": false
}
因为尽管 foo
是 false
:
,但似乎仍然需要 bar
Message:
Required properties are missing from object: bar.
Schema path:
#/then/required
我也试过这个:
{
"type": "object",
"properties": {
"foo": { "type": "boolean" },
"bar": { "type": "string" }
},
"if": {
"properties": {
"foo": { "const": "true" }
},
"required": ["foo"]
},
"then": { "required": ["bar"] }
}
但是这个接受下面的JSON,这应该被认为是无效的:
{
"foo": true
}
我已经看过 ,但它使用类型 string
作为 foo
,效果很好。我需要 foo
才能成为 boolean
。
当foo
为true
时,如何规定bar
?
您差一点就做对了。
您对 const
的使用是正确的,但该值是一个字符串而不是布尔值。你想要...
"foo": { "const": true }
使用JSON架构,当属性foo
(boolean
)是时,如何指定属性bar
是必需的设置为 true
?
我试过以下方法:
{
"type": "object",
"properties": {
"foo": { "type": "boolean" },
"bar": { "type": "string" }
},
"if": {
"properties": {
"foo": { "boolean": true }
},
"required": ["foo"]
},
"then": { "required": ["bar"] }
}
但是,这无法验证:
{
"foo": false
}
因为尽管 foo
是 false
:
bar
Message:
Required properties are missing from object: bar.
Schema path:
#/then/required
我也试过这个:
{
"type": "object",
"properties": {
"foo": { "type": "boolean" },
"bar": { "type": "string" }
},
"if": {
"properties": {
"foo": { "const": "true" }
},
"required": ["foo"]
},
"then": { "required": ["bar"] }
}
但是这个接受下面的JSON,这应该被认为是无效的:
{
"foo": true
}
我已经看过 string
作为 foo
,效果很好。我需要 foo
才能成为 boolean
。
当foo
为true
时,如何规定bar
?
您差一点就做对了。
您对 const
的使用是正确的,但该值是一个字符串而不是布尔值。你想要...
"foo": { "const": true }