Как настроить картограф Джексона

Как я могу глобально настроить 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.

Другие вопросы по тегам