2

如何为 http4k 全局配置 json 序列化程序?例如,snake case 字段名称或将 DateTime 格式化为 ISO8601。

4

2 回答 2

1

由于该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

于 2018-11-19T04:37:37.717 回答
-1

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

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

于 2018-11-18T18:47:49.123 回答