Кажется, у меня возникла проблема при использовании Jackson для сериализации в XML. Мой код ниже:
ТЕСТОВЫЙ КОНТЕЙНЕР
package com.test;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonProperty;
public class TestContainer {
private String testContainerID;
private String testContainerMessage;
private ArrayList<TestChild> testContainerChildren;
@JsonProperty("TestContainerID")
public String getTestContainerID() {
return testContainerID;
}
@JsonProperty("TestContainerID")
public void setTestContainerID(String testContainerID) {
this.testContainerID = testContainerID;
}
@JsonProperty("TestContainerMessage")
public String getTestContainerMessage() {
return testContainerMessage;
}
@JsonProperty("TestContainerMessage")
public void setTestContainerMessage(String testContainerMessage) {
this.testContainerMessage = testContainerMessage;
}
@JsonProperty("TestContainerChildren")
public ArrayList<TestChild> getTestContainerChildren() {
return testContainerChildren;
}
@JsonProperty("TestContainerChildren")
public void setTestContainerChildren(ArrayList<TestChild> testContainerChildren) {
this.testContainerChildren = testContainerChildren;
}
}
ТЕСТЧИЛД
package com.test;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
@JsonRootName(value="TestChild")
public class TestChild {
private String testChildID;
private String testChildMessage;
@JsonProperty("TestChildID")
public String getTestChildID() {
return testChildID;
}
@JsonProperty("TestChildID")
public void setTestChildID(String testChildID) {
this.testChildID = testChildID;
}
@JsonProperty("TestChildMessage")
public String getTestChildMessage() {
return testChildMessage;
}
@JsonProperty("TestChildMessage")
public void setTestChildMessage(String testChildMessage) {
this.testChildMessage = testChildMessage;
}
}
ИСПОЛЬЗОВАНИЕ
Сериализация:
XmlMapper xm = новый XmlMapper (); TestContainer tc = xm.readValue (sb.toString (), TestContainer.class);
Десериализация:
System.out.println (xm.writeValueAsString (tc)); tc = xm.readValue (sb.toString (), TestContainer.class);
Я загружаю XML-файл из папки в пути к классам и помещаю содержимое файла в StringBuffer. Проблема заключается в сгенерированном XML для коллекции объектов. При написании XML мне нужно что-то вроде:
<TestContainerChildren><TestChild><...(Element Details)...></TestChild></TestContainerChildren>
но я получаю:
<TestContainerChildren><TestContainerChildren><...(Element Details)...><TestContainerChildren></TestContainerChildren>
Я не уверен, что мне здесь не хватает. У меня нет проблем с JSON-частью сериализации / десериализации, только XML. Я пробовал использовать аннотации Джексона и JAXB, чтобы отключить упаковку, я пробовал использовать следующие аннотации:
- @JsonRootName
- @JsonProperty
- @JacksonXmlElementWrapper
- @JacksonElement
- @XmlElementWrapper
- @XmlElement
Я почти уверен, что это что-то глупое с моей стороны, но любая помощь будет очень признательна.