检查 JSON 验证中两个不同数组项中不同键的真实值
Check for true values for different keys in two different array items in JSON Validation
考虑一下我是否有一个类似于以下示例的数组:
{
"id": 1,
"published": true,
"available": false
},
{
"id": 2,
"published": false,
"available": true
}
数组中可以有很多项,比如最多 10 个。我需要分别检查 published
和 available
的所有项。
JSON 验证应检查所有项目并 PASS 如果数组项目中的任何一项具有 true
至少一次 published
的值 AND true
值 available
也至少一次。它可以在同一个项目或不同的项目中。如果这些属性中的任何一个在任何数组项中都不是 true
甚至一次,则验证应该失败。关于如何完成这项工作的任何想法?
我试过了
anyOF: 检查其中一个属性并通过验证,
allOf:检查每个实例并且对每个实例验证失败它是假的(即使它的密钥是true
一次也需要通过),
contains:只能在验证中使用一次,并最终检查单个项目中的两个键是否为真。
关于如何解决这个问题的任何建议都会非常有帮助!
谢谢。
您当然可以多次使用 "contains" -- 只需将其放在 "allOf" 或 "anyOf" 中即可。那么,是这样的吗?
{
"type": "array",
"items": {
"type": "object"
},
"allOf": [
{
"contains": {
"properties": {
"published": { "const": true }
}
},
{
"contains": {
"properties": {
"available": { "const": true }
}
}
}
]
}
考虑一下我是否有一个类似于以下示例的数组:
{
"id": 1,
"published": true,
"available": false
},
{
"id": 2,
"published": false,
"available": true
}
数组中可以有很多项,比如最多 10 个。我需要分别检查 published
和 available
的所有项。
JSON 验证应检查所有项目并 PASS 如果数组项目中的任何一项具有 true
至少一次 published
的值 AND true
值 available
也至少一次。它可以在同一个项目或不同的项目中。如果这些属性中的任何一个在任何数组项中都不是 true
甚至一次,则验证应该失败。关于如何完成这项工作的任何想法?
我试过了
anyOF: 检查其中一个属性并通过验证,
allOf:检查每个实例并且对每个实例验证失败它是假的(即使它的密钥是true
一次也需要通过),
contains:只能在验证中使用一次,并最终检查单个项目中的两个键是否为真。 关于如何解决这个问题的任何建议都会非常有帮助! 谢谢。
您当然可以多次使用 "contains" -- 只需将其放在 "allOf" 或 "anyOf" 中即可。那么,是这样的吗?
{
"type": "array",
"items": {
"type": "object"
},
"allOf": [
{
"contains": {
"properties": {
"published": { "const": true }
}
},
{
"contains": {
"properties": {
"available": { "const": true }
}
}
}
]
}