Jackson Mixins 与 Kotlin

Tin*_*Man 6 android json jackson kotlin

我正在尝试使用 Jackson mixins 来忽略外部 Kotlin 数据类的属性,但到目前为止,它对我不起作用。

这是我的 SimpleModule 扩展:

class BarModule : SimpleModule() {
    override fun setupModule(context: SetupContext?) {
        context?.setMixInAnnotations(Bar::class.java, BarMixin::class.java)
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的混音:

abstract class BarMixin {
    @JsonIgnore val totalValue: Double = 0.0
}
Run Code Online (Sandbox Code Playgroud)

我最初尝试过 @JsonIgnore val TotalValue: Double,但它不接受。

这是我的课:

data class Bar(
        val a: String,
        val b: Boolean = false,
        val c: Boolean = false,
        val d: Array<Block>
) {
    val totalValue: Double by lazy {
        d.sumByDouble { it.value }
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我创建映射器的方式:

private val mapper = jacksonObjectMapper().registerModule(KotlinModule()).registerModule(BarModule())
Run Code Online (Sandbox Code Playgroud)

运行时,它崩溃并出现错误:无法启动活动:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“totalValue”,未标记为可忽略

Log*_*ain 6

尝试将注释放在 MixIn 的构造函数上,例如:

abstract class BarMixin (
    @JsonIgnore val totalValue: Double = 0.0
)
Run Code Online (Sandbox Code Playgroud)

(注意()代替{}