如何在 required anyOf jsonSchema 中使用 anyof?

How to use anyof inside required anyOf jsonSchema?

在对象x里面,它应该有anyOf a,b,也应该有anyOf c,d。 这是我当前有效的代码,但它似乎不是正确的方法。

{
    "type": "object",
    "properties": {
        "x": {
            "type": "object",
            "anyOf": [
                {
                    "required": ["a","c"]
                },
                {
                    "required": ["a","d"]
                },
                {
                    "required": ["b","c"]
                },
                {
                    "required": ["b","d"]
                }
            ],
            "properties": {
                "a": {
                    "type": "string"
                },
                "b": {
                    "type": "string"
                },
                "c": {
                    "type": "string"
                },
                "d": {
                    "type": "string"
                }
            }
        }
    }
}

如何以更简单的方式做到这一点? 即,对象 x 应该有 (a 或 b) 和 (c 或 d)。

Object x should have (a or b) and (c or d)

如果这正是您所需要的,那么您可以使用 allOf 关键字结合 anyOf 来表达。只需将 allOf 视为 AND,将 anyOf 视为 OR:

...
"allOf": [
  {
    "anyOf": [
      { "required": ["a"] },
      { "required": ["b"] }
    ]
  },
  {
    "anyOf": [
      { "required": ["c"] },
      { "required": ["d"] }
    ]
  }
]