JSON模式依赖项:枚举内容取决于另一个枚举的选择

时间:2018-05-08 07:31:42

标签: json jsonschema

我有enum第一组选项,第二个enum,其内容取决于第一个enum中的选择。

以下是我目前(不对)的一个简单示例:

"fontGroup": {
    "title": "Font Group",
    "type": "string",
    "enum": [
        "Roboto",
        "Noto",
        "Alegreya"
    ],
    "default": "Roboto"
},
"fontFamily": {
    "title": "Font Family",
    "type": "string",
    "enum": [
        "Roboto Slab",
        "Roboto Condensed",
        "---",
        "Noto Sans",
        "Noto Serif",
        "---",
        "Alegreya SC",
        "Alegreya Sans"
    ],
    "default": "Roboto Slab"
}

当然,如果从第一个Noto中选择了enum,则只有第二个Noto中的enum相关选项有效。例如,与Noto结合使用Roboto Condensed无效。

如何在架构中指定?

1 个答案:

答案 0 :(得分:1)

您不能引用draft-07及以下版本的相对属性,但您可以枚举所有可能的对象变体:

{
  "type": "object",
  "oneOf": [
    {
      "properties": {
        "fontGroup": {
          "const": "Roboto"
        },
        "fontFamily": {
          "enum": [
            "Roboto Slab",
            "Roboto Condenced"
          ]
        }
      }
    },
    {
      "properties": {
        "fontGroup": {
          "const": "Noto"
        },
        "fontFamily": {
          "enum": [
            "Noto Sans",
            "Noto Serif"
          ]
        }
      }
    },
    {
      "properties": {
        "fontGroup": {
          "const": "Alegreya"
        },
        "fontFamily": {
          "enum": [
            "Alegreya SC",
            "Alegreya Sans"
          ]
        }
      }
    }
  ]
}
const无法使用

draft-04关键字,您可以将其更改为单值枚举:"enum":["Roboto"]