Я хотел бы зарегистрировать модуль Kotlin с Jackson в приложении Quarkus, чтобы Джексон мог десериализовать JSON в классы данных без использования NoArgsConstructor. Как лучше всего это сделать?
Обновить после комментария
Приложение представляет собой службу REST, написанную на Kotlin. На уровне API мы используем классы View (например, PersonView или PersonWriteView), чтобы абстрагироваться от моделей и сущностей в сервисе, соответственно. слой стойкости. Чтобы уменьшить накладные расходы и при этом получить красивые и значимые функции equals () и hashcode (), мы используем для этого data class
es.
В стандартных настройках Джексон не может напрямую десериализоваться в классы данных, потому что ему нужен пустой конструктор. Это можно исправить, применив плагин компилятора no-arg и добавив аннотацию, например @NoArgConstructor
похоже на то, что предлагает Ломбок. Но, конечно, таким образом мы должны аннотировать каждый класс данных в API, который подвержен ошибкам.
Лучшее решение для этого - включить com.fasterxml.jackson.module: jackson-module-kotlin, который даст вам чудесный KotlinModule. После этого mapper.treeToValue()
может напрямую создавать data class
экземпляры без использования пустого конструктора. Чтобы это работало, мы должны зарегистрировать модуль в ObjectMapper, например. через ObjectMapper().findAndRegisterModules()
. Все, что я хочу знать, это как настроить ObjectMapper, который используется Resteasy для демаршалинга JSON на объекты.