Как применять ограничения в Json Schema
Мы используем JsonSchema для документирования наших Rest API, и я должен быть уверен, что каждая строка, число, массив имеют ограничения на их максимальный размер, примененный к ним, т.е.
- все строки имеют набор maxLength и pattern
- все целые числа / числа имеют максимальный набор
- все массивы имеют набор maxItems
Это тогда позволит нам выполнить проверку javax для POJO, сгенерированных из JsonSchema (мы используем jsonschema2pojo с аннотациями JSR303).
Я бы предпочел не проверять вручную каждую схему, так что интересно, есть ли какой-нибудь автоматизированный инструмент для проверки каждого элемента на предмет этих элементов? Если нет, то я могу написать один:-)
Большое спасибо
1 ответ
Вы можете создать свою собственную мета-схему так же, как любая действительная JSON-схема может быть проверена на соответствие мета-схеме draft-04.
Взяв пример, вы бы добавили следующие ограничения в общие допустимые JSON-схемы:
{
"oneOf" : [{
"type" : "string",
"required" : ["pattern", "maxLength"]
}, {
"type" : "array",
"required" : ["maxItems"]
}, {
"type" : {
"enum" : ["number", "integer"]
},
"required" : ["maximum"]
}, {
"type" : {
"enum" : ["object", "boolean", "null"]
}
}
]
}
После вашей собственной мета-проверки вы можете безопасно генерировать Java-классы.