[英]JSON-Schema draft-04 - OneOf with required
我有一個API路由,可以在處理邏輯之前驗證json模式。
此路由可以基於發送的JSON創建2種類型的“文章” 。 我使用OneOf檢查架構是否對應於這兩種類型之一。
{
"type": "object",
"oneOf": [{
"properties": {
"name": {
"type": "string",
},
"description": {
"type": "string"
}
}
}, {
"properties": {
"author": {
"type": "string",
},
"editor": {
"type": "string"
}
},
"required":["author", "editor"]
}]
}
因此,第一種類型可以具有名稱和描述,但是不需要此字段。
第二種類型需要具有作者和編輯者 。
如果僅使用author字段發送JSON模式,會發生什么情況? ( 編輯器為空)
感謝您的回復。
通過oneOf關鍵字的定義
要針對oneOf進行驗證,給定的數據必須恰好針對給定的子方案之一有效。
在定義架構的方式中,僅包含“ author”屬性的對象將始終有效,因為第一個oneOf定義可以轉換為:
具有任何一組屬性的對象都是有效的,但是如果該對象包含“名稱”和“描述”屬性,則它們必須均為字符串類型。
如您所見,通過此定義,僅包含“ author”屬性的對象是完全有效的。
實際上,如果給定對象包含“名稱”和/或“描述”屬性並且它們不是字符串,則僅根據第二個oneOf定義(作者,編輯者)驗證給定對象。
這是學習JSON Schema的很好參考https://spacetelescope.github.io/understanding-json-schema/
這是一個很好的JSON模式驗證器http://www.jsonschemavalidator.net
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.