2016-04-02 6 views
2

Я пытаюсь использовать Jackson mixins, чтобы игнорировать свойство внешнего класса данных Kotlin, но пока это не работает для меня.Jackson Mixins с Kotlin

Это мое SimpleModule расширение:

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

И это мой Mixin:

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

Первоначально я пытался @JsonIgnore VAL totalValue: распашные, но не принять.

Это мой класс:

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 
) 

(обратите внимание на () вместо {})

Смежные вопросы