我正在尝试定义一个允许用户从固定列表中选择一个或多个值的JSON模式。假设我有一个属性“列”,例如:
http://a.xyz/resource?columns=col1,col2
我将其定义为返回一个数组,但我也想要
http://a.xyz/resource?columns=col3
有效,返回单个元素数组。我有这个:
"properties": {
"columns": {
"oneOf": [
{
"type": "array",
"uniqueItems": true,
"minItems": 2,
"items": {
"type":"string",
"enum": ["col1", "col2", "col3", "col4"]
}
},
{
"type":"string",
"enum": ["col1", "col2", "col3", "col4"]
}
]
}
}
但如果选择了一个元素,我必须将结果强制转换为数组。更糟糕的是,这样的查询:
http://a.xyz/resource?columns=col3,blah
没有报告“blah”不是列,就像我删除上面的第二个块一样。