JSON 架构 - 如何引用枚举值并将多组枚举合并为一个 属性?

JSON Schema - how to reference enum value and combine multiple sets of enums to one property?

我在架构中有两个枚举字段:

{ ...
  "prop1": {
    oneOf": [{
      "enum": [
        "VAL1",
        "VAL2"],
      "type": "string"
      },{
        "type": "null"}]
  },
  "prop2": {
    oneOf": [{
      "enum": [
        "VAL3",
        "VAL4"],
      "type": "string"
      },{
        "type": "null"}]
}

我想创建第三个枚举字段 prop3,并允许来自 prop1prop2 的值。 我可以复制值:

{ ...
  "prop3": {
    oneOf": [{
      "enum": [
        "VAL1",
        "VAL2"
        "VAL3",
        "VAL4"
        ],
      "type": "string"
      },{
        "type": "null"}]
  }
}

但我希望 prop3 在将它们添加到 prop1prop2 时自动获取新值。

我可以为枚举值创建一个 definition 然后在两个地方使用它吗? 我怎样才能像那样连接两组枚举?

您可以使用 anyOf 关键字来有效地组合枚举。

{
  "type": "object",
  "properties": {
    "prop1": { "$ref": "#/definitions/prop1" },
    "prop2": { "$ref": "#/definitions/prop2" },
    "prop3": { "$ref": "#/definitions/prop3" }
  },
  "definitions": {
    "prop1": { "enum": ["VAL1", "VAL2"] },
    "prop2": { "enum": ["VAL3", "VAL4"] },
    "prop3": {
      "anyOf": [
        { "$ref": "#/definitions/prop1" },
        { "$ref": "#/definitions/prop2" }
      ]
    }
  }
}