Схема JSON: как расширить дополнительные свойства? - PullRequest
0 голосов
/ 27 мая 2019

Допустим, у меня есть простой JSON-подобный:

"values": {
    "A": 0,
    "B": 0,
    "C": 0,
    "D": 0,
    "E": 0,
}

A, B, C являются частью базовой схемы T1, в то время как D, E являются частью расширяющейся схемы T2.Следовательно, схема T1 имеет 3 свойства, а T2 - 5 свойств.Я хотел бы избежать записи A, B, C дважды, в обеих схемах.

Есть ли в JSON Schema способ расширить список свойств?

1 Ответ

1 голос
/ 27 мая 2019

Если вы хотите разделить свои схемы таким образом, чтобы они отражали расширяющиеся объекты, где некоторые из ваших схем имеют additionalProperties: false, вам нужно поднять additionalProperties: false.

Вы можете использовать определение в каждой схеме для определения объекта без AdditionalProperties: false, тогда корневая схема allOf ссылается на определение с AdditionalProperties: true. Затем в других схемах вы можете ссылаться на определение предыдущей схемы.

К сожалению, это ограничение с draft-7. В draft-8 можно делать то, что вы хотите, с новым ключевым словом, но оно еще не опубликовано.

...