Как применять ограничения в 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-классы.

Другие вопросы по тегам