Jackson Mixins 与 Kotlin
Posted
技术标签:
【中文标题】Jackson Mixins 与 Kotlin【英文标题】:Jackson Mixins with Kotlin 【发布时间】:2016-07-22 03:25:05 【问题描述】:我正在尝试使用 Jackson mixins 来忽略外部 Kotlin 数据类的属性,但到目前为止,它对我不起作用。
这是我的 SimpleModule 扩展:
class BarModule : SimpleModule()
override fun setupModule(context: SetupContext?)
context?.setMixInAnnotations(Bar::class.java, BarMixin::class.java)
这是我的混音:
abstract class BarMixin
@JsonIgnore val totalValue: Double = 0.0
我最初尝试过@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
这就是我创建映射器的方式:
private val mapper = jacksonObjectMapper().registerModule(KotlinModule()).registerModule(BarModule())
运行时崩溃并报错:无法启动活动:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“totalValue”,未标记为可忽略
【问题讨论】:
【参考方案1】:尝试将注解放在 MixIn 的构造函数上,例如:
abstract class BarMixin (
@JsonIgnore val totalValue: Double = 0.0
)
(注意()
而不是)
【讨论】:
警告:mixin 的构造函数必须与目标类的构造函数完全匹配:参数名称、顺序和类型。我在调试器中经过长时间的会话后发现了这一点,在那里我发现构造函数至少在参数数量上是匹配的。以上是关于Jackson Mixins 与 Kotlin的主要内容,如果未能解决你的问题,请参考以下文章
SASS 和 Bootstrap - mixins 与 @extend
SASS 和 Bootstrap - mixins 与 @extend