将JsonArray元素的类型限制为同一类型,但不限制类型



我们有以下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" }
}
]
}

相关内容

  • 没有找到相关文章

最新更新