Как указать свойство как null или ссылку?

У меня есть json-документ, в котором часть может быть либо нулевой, либо подобъектом, например:

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

Вопрос в том, можно ли смоделировать это в проекте j4 схемы json, используя ref?

Что бы я хотел, это что-то вроде этого

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

Ответ 1

То, что вы опубликовали, должно работать, если вы удалите "type":"object" из определения.

Однако более аккуратный, более явный способ указать альтернативы - использовать oneOf. Вы можете оставить свое определение "id" нетронутым и просто использовать:

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

Ответ 2

Поле

nullable будет поддерживаться в спецификации OpenApi (aka Swagger) v3.0.0

Итак, с этой новой спецификацией ваше определение будет выглядеть так:

"properties":{
    "owner":{
        "nullable": true,
         ...
    }
},