代码之家  ›  专栏  ›  技术社区  ›  Roy Tsabari

JSON模式-如何引用枚举值并将多组枚举组合到一个属性?

  •  2
  • Roy Tsabari  · 技术社区  · 8 年前

    架构中有两个枚举字段:

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

    我想创建第三个枚举字段 prop3 ,并允许 prop1 prop2 . 我可以复制值:

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

    但我想要 项目3 在我添加新值时自动获取新值 项目1 项目2 .

    我可以创建 definition 用于枚举值,然后在两个位置使用它? 我怎样才能像那样连接两组枚举?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Jason Desrosiers    8 年前

    您可以使用 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" }
          ]
        }
      }
    }