如何配置杰克逊映射器

时间:2018-11-18 13:54:02

标签: kotlin http4k

如何为http4k全局配置json序列化程序?例如,使用蛇形案例字段名称或将DateTime格式化为ISO8601。

2 个答案:

答案 0 :(得分:0)

由于ObjectMapper实例为private within ConfigurableJackson,因此在构造之后无法进行任何配置。

因此,您要么需要构建自己的ConfigurableJackson的直接实例并传递自定义的ObjectMapper,要么需要使用自己的类对ConfigurableJackson进行子类化。然后在构造函数期间,创建一个ObjectMapper请参见下面的示例)或拦截传递到您的构造函数中的一个并更改其设置。

无论您做什么,请确保不要破坏http4k框架或任何其他可能使用同一实例的东西。您可以看到http4k declared in their source code使用的默认值:

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

答案 1 :(得分:-1)

您不一定需要扩展ConfigurableJackson -扩展它是最方便的方法(根据我们的经验)。

所有配置都是通过调整注入到ObjectMapper构造函数中的ConfigurableJackson实例来完成的-ConfigurableJackson本身仅提供了围绕该映射器的包装器API。问题与杰克逊的标准配置有关,因此您应该直接从杰克逊文档中寻求特定问题(如蛇案)的答案,因为http4k不拥有该API。