【问题标题】:JSON Schema object contains valueJSON Schema 对象包含值
【发布时间】:2021-02-02 14:02:13
【问题描述】:

我想检查“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"
            }
          }
        }
      ]
    }
  }
}

【问题讨论】:

  • contains 仅适用于数组。

标签: json jsonschema json-schema-validator


【解决方案1】:

您可以通过稍微费解地使用“not”关键字来做到这一点。也就是说,我们可以构造一个断言:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2015-09-16
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多