JSON 架构对象包含值

JSON Schema object contains value

我想检查“obj”是否至少包含一个值“test”。但是“obj”中的键是随机的。

Json:

{
  "title": "doc",
  "obj": {
   "xxxx-random": "test",
   "zzzz-random": "wol"
  }
}

我的想法是使用 oneOf,但它并没有像我预期的那样工作:

架构Json:

{
  "properties": {
    "title": {
      "type": "string"
    },
    "obj": {
      "type": "object",
      "oneOf": [
        {
          "contains": {
            "properties": {
              "type": "string",
              "desc":"test"
            }
          }
        }
      ]
    }
  }
}

您可以通过稍微动脑筋地使用“not”关键字来做到这一点。也就是说,我们可以构建一个断言的模式:

  • 属性“obj”必须存在
  • "obj"的值为对象,必须至少有一个属性
  • “obj”下的所有属性都不匹配“test”是不可能的
{
  "type": "object",
  "required": ["obj"],
  "properties": {
    "obj": {
      "type": "object",
      "minProperties": 1,
      "not": {
        "additionalProperties": { "not": { "const": "test" } }
      }
    }
  }
}