Предоставлено часть схемы называется location
так:
{
type: 'object',
required: [ 'country' ],
additionalProperties: false,
properties: {
country: {
enum: [ 'DE', 'CH', 'AT' ],
},
postalCode: { type: 'string' },
},
};
В большинстве наших случаев использования местоположение валидный дается только код страны. Тем не менее, мы имеем несколько случаев, когда мы также должны требовать почтовый индекс.
Компания в нашем случае, например, всегда будет требовать почтовый код. Наша предыдущая схема location
не обеспечивает этого, конечно. В других схемах требуются объекты местоположения, которые не обеспечивают наличие почтового кода. Это наша компания схема:
{
type: 'object',
required: [ 'name', 'location' ],
additionalProperties: false,
properties: {
location: { $ref: 'location' },
name: { type: 'string' },
website: { type: 'string' },
},
};
Есть ли способ в JSON Schema использовать $ реф, но и расширить его так, чтобы location
свойства в company
схемы автоматически потребует postalCode
? Нашим текущим решением является создание второй схемы на основе location
, где мы просто изменили атрибут required
, но я надеюсь, что есть лучший способ.
спасибо.
Доступны следующие варианты: https://github.com/epoberezkin/ajv/issues/134#issuecomment-242989744. Речь идет не о расширении «требуемого», а аналогичного. – esp
Это проще - см. Ниже – esp