在JSON模式中定义枚举数组的正确方法

时间:2015-06-18 19:37:25

标签: arrays json enums jsonschema

我想用JSON模式数组来描述,该数组应包含零个或多个预定义值。为简单起见,我们提供以下可能的值:onetwothree

更正数组(应通过验证):

[]
["one", "one"]
["one", "three"]

不正确:

["four"]

现在,我知道应该使用"enum"属性,但我无法找到相关信息放在哪里。

选项A(在"items"下):

{
    "type": "array",
    "items": {
        "type": "string",
        "enum": ["one", "two", "three"]
    }
}

选项B:

{
    "type": "array",
    "items": {
        "type": "string"
    },
    "enum": ["one", "two", "three"]
}

2 个答案:

答案 0 :(得分:52)

选项A是正确的并且满足您的要求。

{
    "type": "array",
    "items": {
        "type": "string",
        "enum": ["one", "two", "three"]
    }
}

答案 1 :(得分:0)

根据json-schema Herearray的枚举值必须包含在"items"字段中:

{
    "type": "array",
    "items": {
        "type": "string",
        "enum": ["one", "two", "three"]
    }
}

如果您有一个array可以容纳例如项,那么您的架构应如下图所示:

{
  "type": "array",
  "items": [
    {
      "type": "string",
      "enum": ["one", "two", "three"]
    },
    {
      "type": "integer",
      "enum": [1, 2, 3]
    }
  ]
}