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

我想用 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"]
}
147809 次浏览

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

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

根据 json-schema documentationarray的枚举值必须包含在 "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]
}
]
}