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”,未标记为可忽略
尝试将注释放在 MixIn 的构造函数上,例如:
abstract class BarMixin (
@JsonIgnore val totalValue: Double = 0.0
)
Run Code Online (Sandbox Code Playgroud)
(注意()代替{})