I noticed that when i serialize an object with a null list and disable using a default wrapper around lists, upon deserialization the object returned differs from the object serialized.
Here is a test of the problem
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import java.io.IOException;
import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class JacksonTest {
@Test
public void test() throws IOException {
XmlMapper mapper = XmlMapper.builder().defaultUseWrapper(false).build();
Parent a = new Parent();
String out = mapper.writeValueAsString(a);
Parent b = mapper.readValue(out, Parent.class);
Assertions.assertEquals(a.getChildren(), b.getChildren());
}
@JacksonXmlRootElement
static class Parent {
List<Child> children;
public Parent() {}
public List<Child> getChildren() {
return children;
}
public void setChildren(List<Child> children) {
this.children = children;
}
}
static class Child {
private String name;
}
}
class Parent has a list of class Child that is null, when this object is serialized the following xml is
<Parent><children/></Parent>
if you take this xml and deserialize it back into a Parent object what ends up happening is that the children property is a list that has one element, an object of Child with null properties. I was expecting that Parent would have a null list instead.
If you enable wrapper, it works fine and the serialized xml is
which deserializes into the same object as the original
I noticed that when i serialize an object with a null list and disable using a default wrapper around lists, upon deserialization the object returned differs from the object serialized.
Here is a test of the problem
class
Parenthas a list of classChildthat is null, when this object is serialized the following xml isif you take this xml and deserialize it back into a
Parentobject what ends up happening is that the children property is a list that has one element, an object ofChildwith null properties. I was expecting that Parent would have a null list instead.If you enable wrapper, it works fine and the serialized xml is
which deserializes into the same object as the original