如何为http4k全局配置json序列化程序?例如,蛇形大小写字段名或将DateTime格式化为ISO8601。
发布于 2018-11-19 04:37:37
由于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-18 18:47:49
您不一定需要扩展ConfigurableJackson --只是扩展它是最方便的方法(在我们的经验中)。
所有配置都是通过调整注入到ObjectMapper构造函数中的ConfigurableJackson实例来完成的-- ConfigurableJackson本身只是在映射器周围提供了包装器API。问题是与杰克逊的标准配置有关,所以您应该直接从杰克逊文档中寻找特定问题(蛇案例等)的答案,因为http4k并不拥有该API。
https://stackoverflow.com/questions/53361644
复制相似问题