Версия схемы поддерживается вручную в коде нашего приложения; всякий раз, когда мы меняем нашу модель, нам нужно вручную увеличивать версию схемы, определенную в константе. В конечном итоге каждая версия схемы будет опубликована на веб-сайте как наша-схема-x.y.json.
Чтобы избежать случайного изменения модели Java (и, следовательно, схемы) без обновления версии схемы, мы должны хотели бы сравнить ранее опубликованную схему с вновь созданной схемой и не выполнить сборку, если они семантически отличаются.
Нас интересуют только изменения структурной схемы, такие как добавление или удаление разрешенных свойств, изменения в разрешенных значениях свойств (перечислений),... Допускаются неструктурные изменения, такие как обновленные описания свойств, и в этом случае мы обновим уже опубликованную версию схемы.
Вопрос в том, как для наилучшего выполнения такого сравнения на основе десериализации схем в экземпляры Jackson JsonNode:
- Сравнение по умолчанию на основе Джексона игнорирует порядок свойств, поэтому нам не нужно беспокойтесь об этом.
- Сравнение по умолчанию на основе Джексона учитывает порядок массива. Я полагаю, что для массивов перечислений мы должны явно игнорировать порядок массива, а как насчет других полей схемы JSON, которые принимают значения массива?
- Мы можем удалить поля описания перед сравнением. Существуют ли какие-либо другие поля схемы JSON, которые потенциально могут быть изменены, не затрагивая структуру JSON, описанную схемой?
- Есть ли другие соображения/конкретные свойства схемы JSON, требующие особого внимания?
Подробнее здесь: https://stackoverflow.com/questions/784 ... y-the-same
Мобильная версия