我们有以下JSON:
{ "someName" : [1,2,3,4,5] }
或
{ "someName" : ["one","two","three"] }
我们希望按照OpenAPI 3.x规范起草一个JSON模式。我们的约束:数组元素可以是整数或字符串,但所有数组元素必须是相同的类型。我们的模式如下:
{
"type": "array",
"items": {
"oneOf": [
{"type": "string"},
{"type": "integer"}
]
}
}
这确实限制了数组中的数据类型,但仍然允许在一个数组中混合字符串和整数,这是我们需要避免的。
{"someName" : 1, "two", "three", 4}
我们研究了这个问题,但它没有解决一致的数据类型
OpenAPI架构中是否有一种方法可以强制每个数组的唯一性?
您需要将oneOf
提升一个级别。在这种情况下,anyOf
也是一个更好的选择。在这种情况下,结果是相同的,但anyOf
更有效。
{
"type": "array",
"anyOf": [
{ "items": { "type": "string" } },
{ "items": { "type": "integer" } },
]
}
编辑:回应评论。。。
要解决该错误,可以尝试将type
拉入anyOf
。不幸的是,重复会降低模式的效率,但这可能有助于解决错误。
{
"anyOf": [
{
"type": "array",
"items": { "type": "string" }
},
{
"type": "array",
"items": { "type": "integer" }
}
]
}