Как указать свойство как 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,
...
}
},