, когда я пытаюсь проанализировать следующий XML, я получаю сообщение об ошибке с Джексоном:
<root>
<aCollection>
<language xml:lang="en">
<entry id="1" value="foo"/>
<entry id="2" value="bar"/>
<entry id="3" value="blah"/>
</language>
</aCollection>
</root>
Используются следующие классы:
@Data
@JacksonXmlRootElement(localName = "root")
public class RootDTO {
@JacksonXmlProperty(localName = "aCollection")
private CollectionDTO collection;
}
@Data
public class CollectionDTO {
@JacksonXmlProperty(localName = "language")
LanguageDTO language;
}
@Data
public class LanguageDTO {
@JacksonXmlProperty(localName = "entry")
EntryDTO[] entries;
}
@Data
public class EntryDTO {
@JacksonXmlProperty(isAttribute = true)
private String id;
@JacksonXmlProperty(isAttribute = true)
private String value;
}
Ошибка: Can not instantiate value of type [simple type, class com.tinkerdesk.viewer.model.DTO.EntryDTO] from JSON String; no single-String constructor/factory method
Если я уберу скобки массива, это сработает, но, конечно, анализирует только первый entry
элемент.Я обнаружил, что, возможно, мне следует использовать @JacksonXmlElementWrapper(useWrapping = false)
поверх EntryDTO[] entries;
, поскольку элементы не обернуты.Однако это не компилирует меня, потому что в 1014 * нет useWrapping
.Моя основная версия Jackson - 2.9.6 и xml-databind 0.6.2.Есть ли сейчас новый способ сделать это?