web-dev-qa-db-ja.com

プロパティをnullまたは参照として指定するにはどうすればよいですか?

次のように、パーツがnullまたはサブオブジェクトのいずれかになり得るjsonドキュメントがあります。

[{
    "owner":null    
},
{
    "owner":{
        "id":1
    }   
}]

問題は、refを使用してjsonスキーマドラフトv4でこれをモデル化できるかどうかです。

私が欲しいのはこのようなものです

{
    "type":"object",
    "properties":{
        "owner":{
            "type":["null", "object"],
            "$ref":"#/definitions/id"
        }
    },
    "definitions":{
        "id":{
            "type":"object",
            "properties":{
                "id":{
                    "type":"number"
                }
            }
        } 
    }
}
25
viblo

定義から"type":"object"を削除すると、投稿した内容が機能するはずです。

ただし、代替を指定するためのより明確で明確な方法は、oneOfを使用することです。 "id"の定義を変更せずにそのまま使用できます。

    "owner":{
        "oneOf": [
            {"type": "null"},
            {"$ref":"#/definitions/id"}
        ]
    }
41
cloudfeet

nullableフィールドはOpenApi(別名Swagger)仕様でサポートされる v3.0.

したがって、この新しい仕様では、定義は次のようになります。

"properties":{
    "owner":{
        "nullable": true,
         ...
    }
},
0
Nazar Gargol