JsonArray 元素的类型限制为同一类型,但不限制类型
Limit type of JsonArray elements to the same type, but not limit types
我们有以下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}
我们查看了 this question,但它没有解决一致的数据类型
OpenAPI Schema 中有没有办法强制每个数组的唯一性?
您需要将 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" }
}
]
}
我们有以下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}
我们查看了 this question,但它没有解决一致的数据类型
OpenAPI Schema 中有没有办法强制每个数组的唯一性?
您需要将 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" }
}
]
}