json 模式包含属性 B 和 C 或 D

问题描述 投票:0回答:1

我定义了以下架构:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://example.com/schemas/test",
  "type": "object",
  "properties": {
    "A": {
      "type": "string"
    }
  },
  "oneOf": [
    {
      "properties": {
        "B": {
          "type": "integer"
        },
        "C": {
          "type": "boolean"
        }
      }
    },
    {
      "properties": {
        "D": {
          "type": "string"
        }
      }
    }
  ]
}

这个想法是模式包含 A,以及 B、C 或 D。没有任何元素是必需的。

以下实例无法验证:

{
  "A": "world"
}

json schema jsonschema
1个回答
0
投票

我相信您想要

anyOf
而不是
oneOf
,因为
oneOf
检查 恰好一个 子模式,但在您的测试实例中您没有子模式之一。文档位于:https://json-schema.org/understanding-json-schema/reference/combining#oneOf,您可以在此处测试您的架构:https://json-schema.hyperjump.io/这就是我发现
anyOf
适用于您的情况的地方。

© www.soinside.com 2019 - 2024. All rights reserved.