У меня есть XML-схема с элементом name
:
<xsd:element name="name">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="given" maxOccurs="unbounded" type="xsd:string"/>
<xsd:element name="family" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Мне нужно сопоставить это с рабочим классом Java.
У меня есть приложение весенней загрузки с JAXB XMLконтроллер, который принимает:
<name>
<given>First</given>
<given>Second</given>
<family>Lastname</family>
</name>
Если я использую автоматическую генерацию источника схемы (с jaxb2-maven-plugin), я получаю класс:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"given",
"family"
})
public static class Name {
@XmlElement(required = true)
protected List<String> given = new ArrayList<>();
@XmlElement(required = true)
protected String family;
public List<String> getGiven() {
if (given == null) {
given = new ArrayList<>();
}
return this.given;
}
public void setGiven(List<String> given) {
this.given = given;
}
public String getFamily() {
return family;
}
public void setFamily(String value) {
this.family = value;
}
}
Но проблема в том,когда я запускаю приложение весенней загрузки и вызываю его с помощью вышеуказанного XML, я получаю сообщение об ошибке:
*....Name["given"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token*
Я не могу контролировать формат отправки данных, поэтому я не могу изменить XML, которыйполучено.Я пробовал много разных решений, но полностью застрял с этим.Вы можете помочь?