Сегодня я застрял с проблемой. Мне нужно получить это представление XML:
<promotion>
<i ... />
</promotion>
<promotion_banner>
<i ... />
</promotion_banner>
<promotion_whats_new>
<i ... />
<i ... />
<i ... />
<i ... />
<i ... />
</promotion_whats_new>
Реализация:
@JacksonXmlRootElement
class Response {
@JacksonXmlProperty(isAttribute = true)
var notAuthenticated: Boolean = false
@get:[JacksonXmlProperty(localName = "i")
JacksonXmlElementWrapper(localName = "promotion")]
var promotionItems: MutableList<I> = mutableListOf()
@get:[JacksonXmlProperty(localName = "i")
JacksonXmlElementWrapper(localName = "promotion_banner")]
var promotionBannerItems: MutableList<I> = mutableListOf()
@get:[JacksonXmlProperty(localName = "i")
JacksonXmlElementWrapper(localName = "promotion_whats_new")]
var promotionWhatsNewItems: MutableList<I> = mutableListOf()
@get:[JacksonXmlProperty(localName = "i")
JacksonXmlElementWrapper(localName = "preloader")]
var preloaderItems: MutableList<I> = mutableListOf()
override fun toString(): String {
return "Response(notAuthenticated=$notAuthenticated, promotionItems=$promotionItems, promotionBannerItems=$promotionBannerItems, promotionWhatsNewItems=$promotionWhatsNewItems, preloaderItems=$preloaderItems)"
}
}
Ошибка:
com.fasterxml.jackson.databind.JsonMappingException: Conflicting getter definitions for property "i": Response#getPromotionItems(0 params) vs Response#getPromotionBannerItems(0 params)
Это ошибка или я что-то сделал не так?
Конечно, я могу реализовать его, предоставив новый класс (например, Продвижение), но, возможно, есть лучшее решение.