2016-04-02 17 views
2

Harici bir Kotlin veri sınıfının bir özelliğini yok saymak için Jackson mixins kullanmaya çalışıyorum ama şu ana kadar benim için çalışmıyor.Kotlin ile Jackson Mixins

Bu benim SimpleModule uzantısıdır:

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

Ve bu benim mixin geçerli:

abstract class BarMixin { 
    @JsonIgnore val totalValue: Double = 0.0 
} 

Başlangıçta @JsonIgnore val totalValue çalıştı: Çift, ama o kabul etmeyecektir. aktiviteyi başlatılamıyor:

private val mapper = jacksonObjectMapper().registerModule(KotlinModule()).registerModule(BarModule()) 

çalışan, bu hatasıyla çöküyor:

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 } 
    } 
} 

Bu benim mapper oluşturmak nasıl:

Bu

benim sınıftır com.fasterxml.jackson .databind.exc.UnrecognizedPropertyException: Tanınmayan alan "totalValue", işaretlenmemiş olarak işaretlenmemiş

cevap

1

Aşağıdaki gibi, MixIn yapıcınıza ek açıklama eklemeyi deneyin:

abstract class BarMixin (
    @JsonIgnore val totalValue: Double = 0.0 
) 

( () yerine {} arasında fark)