簡體   English   中英

JSON-Schema draft-04-必需的OneOf

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM