如何在Javalin上配置默认的JacksonJSONMap器

7bsow1i6  于 2023-04-22  发布在  Java
关注(0)|答案(2)|浏览(139)

到目前为止,我找到了如何替换Javalin json mapper:
https://javalin.io/documentation#configuring-the-json-mapper
但我不想替换它,只想添加几个Jackson模块,比如这个:
https://www.ktorm.org/api-docs/org.ktorm.jackson/-ktorm-module/index.html
如果不这样做,Javalin将无法序列化ktorm实体,示例代码here

zu0ti5jz

zu0ti5jz1#

解决了!
在JavalinConfig中,您可以设置JsonMapper的实现
default implementation接受ObjectMapper作为参数,所以我可以这样做:

// custom config to make ktor and jackson behave
val mapper = ObjectMapper()
mapper.registerModule(JavaTimeModule())
mapper.registerModule(KotlinModule.Builder().build())
mapper.registerModule(KtormModule())

// spin up app
val app = Javalin.create {
    it.jsonMapper(JavalinJackson(mapper))
}.start(3000)

然后Javalin和Ktorm完美地配合在一起。
更新:
Now Javalin will detect KtormModule for you!

yeotifhr

yeotifhr2#

可以通过执行以下操作更新默认JacksonMap器:

val app = Javalin.create {
    config.jsonMapper(JavalinJackson().updateMapper { mapper ->
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)
    })
}.start(3000)

更多信息请访问https://javalin.io/documentation#the-default-json-mapper-jackson

相关问题