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