Как настроить картограф Джексона
Как я могу глобально настроить json сериализатор для http4k? Например, имена полей в виде змеи или форматирование DateTime как ISO8601.
2 ответа
Так как ObjectMapper
экземпляр является частным внутриConfigurableJackson
Вы не можете получить это после строительства, чтобы сделать любую конфигурацию.
Таким образом, вам либо нужно создать свой собственный прямой экземпляр ConfigurableJackson
и передать в индивидуальные ObjectMapper
или вам нужно подкласс ConfigurableJackson
с вашим собственным классом. А затем во время конструктора создайте ObjectMapper
(см. пример ниже) или перехватите один передаваемый в ваш конструктор и измените его настройки.
Что бы вы ни делали, убедитесь, что вы не нарушаете структуру http4k или что-либо еще, что может использовать тот же экземпляр. Вы можете увидеть значения по умолчанию, используемые http4k, объявленные в их исходном коде:
object Jackson : ConfigurableJackson(ObjectMapper()
.registerModule(defaultKotlinModuleWithHttp4kSerialisers)
.disableDefaultTyping()
.configure(FAIL_ON_UNKNOWN_PROPERTIES, false)
.configure(FAIL_ON_IGNORED_PROPERTIES, false)
.configure(USE_BIG_DECIMAL_FOR_FLOATS, true)
.configure(USE_BIG_INTEGER_FOR_INTS, true)
)
Вы можете использовать код, аналогичный приведенному выше, чтобы создать свой собственный экземпляр.
Смотрите эту ветку для разговора на эту тему: https://github.com/http4k/http4k/issues/183
Вам не обязательно расширять ConfigurableJackson
- просто расширение это наиболее удобный способ сделать это (по нашему опыту).
Все настройки выполняются путем настройки ObjectMapper
экземпляр, который вводится в ConfigurableJackson
конструктор - ConfigurableJackson
сам по себе предоставляет API-оболочку для этого преобразователя. Вопрос в том, что делать со стандартной конфигурацией Джексона, поэтому вы должны искать ответы на свои конкретные вопросы (случай со змеей и т. Д.) Непосредственно в документации Джексона, поскольку http4k не владеет этим API.