如何在 Ktor 中配置 jackson-modules-java8
How to configure jackson-modules-java8 in Ktor
我正在尝试使用 Ktor 和 Jackson 配置 jackson-modules-java8
但无济于事。
模块添加到gradle.build
dependencies {
...
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.0-rc2'
...
}
根据 Jackson 文档,我应该这样做:
ObjectMapper mapper = JsonMapper.builder()
.addModule(new JavaTimeModule())
.build();
但是在Ktor中我只能这样做:
install(ContentNegotiation) {
jackson {
// `this` is the ObjectMapper
this.enable(SerializationFeature.INDENT_OUTPUT)
// what to do here?
}
}
根据 official example 如果你想添加一个模块你可以使用
registerModule
像这样:
install(ContentNegotiation) {
jackson {
configure(SerializationFeature.INDENT_OUTPUT, true)
setDefaultPrettyPrinter(DefaultPrettyPrinter().apply {
indentArraysWith(DefaultPrettyPrinter.FixedSpaceIndenter.instance)
indentObjectsWith(DefaultIndenter(" ", "\n"))
})
registerModule(JavaTimeModule()) // support java.time.* types
}
}
我正在尝试使用 Ktor 和 Jackson 配置 jackson-modules-java8
但无济于事。
模块添加到gradle.build
dependencies {
...
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.0-rc2'
...
}
根据 Jackson 文档,我应该这样做:
ObjectMapper mapper = JsonMapper.builder()
.addModule(new JavaTimeModule())
.build();
但是在Ktor中我只能这样做:
install(ContentNegotiation) {
jackson {
// `this` is the ObjectMapper
this.enable(SerializationFeature.INDENT_OUTPUT)
// what to do here?
}
}
根据 official example 如果你想添加一个模块你可以使用
registerModule
像这样:
install(ContentNegotiation) {
jackson {
configure(SerializationFeature.INDENT_OUTPUT, true)
setDefaultPrettyPrinter(DefaultPrettyPrinter().apply {
indentArraysWith(DefaultPrettyPrinter.FixedSpaceIndenter.instance)
indentObjectsWith(DefaultIndenter(" ", "\n"))
})
registerModule(JavaTimeModule()) // support java.time.* types
}
}