【发布时间】:2020-01-06 07:50:53
【问题描述】:
我在我的项目中使用Jackson with Kotlin binding。我们有一个数据类,它的字段类型为Map<A, B>,名为“isRecommended”。当 Jackson 序列化数据类时,该字段在生成的 JSON 字符串中被省略。
重现相同行为的简单测试:
class FooKotlin {
@Test
fun testFoo() {
println(jacksonObjectMapper().writeValueAsString(Foo1(true)))
println(jacksonObjectMapper().writeValueAsString(Foo2(1)))
println(jacksonObjectMapper().writeValueAsString(Foo3("true")))
}
}
data class Foo1(val isFoo: Boolean)
data class Foo2(val isFoo: Int)
data class Foo3(val isFoo: String)
控制台打印:
{"foo":true}
{}
{}
当我反编译 Kotlin 字节码时,除了字段的类型外,这三个类似乎具有几乎相同的内容。那么杰克逊的这种行为是什么原因造成的呢?
【问题讨论】:
-
你有什么版本的
jacksonObjectMapper()?看起来在 2.10.1 中发布了修复程序,请参阅 FasterXML/jackson-module-kotlin issue #80