Я пытаюсь создать схему json, которая представляет следующий ресурс:
X resource:
{
"type" : "{some enum of types}",
<some list of properties that depend on the enum>
}
Вот несколько (не настоящих) примеров для иллюстрации:
{
"type" : "car",
"color" : "red",
"style" : "van"
}
{
"type" : "plane",
"color" : "white",
"aisle" : "double"
}
Как видите, свойство aisle
применяется только тогда, когда type
равно plane
, а свойство style
применяется только тогда, когда type
равно car
. Свойство color
общее.
Мне удалось получить что-то вроде этого:
X schema:
{
"$schema" : ...
...
"properties" : {
"type" : {...},
"color" : {...}.
"sub_properties" : {
"type" : "object",
"oneOf" : [ ... ]
}
}
}
Но это относится только к собственности sub_properties
из X
. То есть следующий json:
{
"type" : "car",
"color" : "red",
"sub_properties" : {
"style" : "van"
}
}
Я не могу понять, как «поднять» oneOf
, чтобы он напрямую относился к свойствам X
.
Есть ли способ сделать это?