Как настроить картограф Джексона - PullRequest
0 голосов
/ 18 ноября 2018

Как глобально настроить сериализатор json для http4k? Например, имена полей в виде змеи или форматирование DateTime как ISO8601.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Поскольку экземпляр 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

0 голосов
/ 18 ноября 2018

Вам не обязательно расширять ConfigurableJackson - просто расширение это наиболее удобный способ сделать это (по нашему опыту).

Вся конфигурация выполняется путем настройки экземпляра ObjectMapper, который внедряется в конструктор ConfigurableJackson - сам ConfigurableJackson просто предоставляет API-оболочку для этого преобразователя. Вопрос в том, что делать со стандартной конфигурацией Джексона, поэтому вы должны искать ответы на свои конкретные вопросы (случай со змеей и т. Д.) Непосредственно в документации Джексона, поскольку http4k не владеет этим API.

...