我們有以下 JSON:
{ "someName" : [1,2,3,4,5] }
或者
{ "someName" : ["one","two","three"] }
我們想按照OpenAPI 3.x規范起草一個 JSON Schema。我們的約束:一個陣列元素可以是整數或字串,但所有陣列元素必須是同一型別。我們的架構如下所示:
{
"type": "array",
"items": {
"oneOf": [
{"type": "string"},
{"type": "integer"}
]
}
}
這確實限制了陣列內的資料型別,但仍然允許在一個陣列中混合字串和整數,這是我們需要避免的。
{"someName" : 1, "two", "three", 4}
我們查看了這個問題,但它沒有解決一致的資料型別
OpenAPI Schema 中有沒有辦法強制每個陣列的唯一性?
uj5u.com熱心網友回復:
你需要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" }
}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425402.html
標籤:json 验证 jsonschema
上一篇:清潔架構中的表單驗證
