-
- Notifications
You must be signed in to change notification settings - Fork 233
Open
Description
@JsonUnwrapped does not unwrap items inside a list. Below is a minimal example of what I'm trying to achieve.
I'm trying to model the following simple XSD scheme in Java.
<xs:element name="document" type="Document" /> <xs:complexType name="Document"> <xs:sequence maxOccurs="unbounded"> <xs:element name="a" type="xs:string" /> <xs:element name="b" type="xs:string" /> </xs:sequence> </xs:complexType>There is one type Document which contains a sequence of alternating a and b elements. E.g., this is a valid XML instance:
<document> <a>A1</a> <b>B1</b> <a>A2</a> <b>B2</b> <a>A3</a> <b>B3</b> </document>I tried to represent this in Java using the following classes:
@JacksonXmlRootElement(localName = "document") public class Document { private List<ABPair> abPairs = new ArrayList<>(); @JsonUnwrapped @JacksonXmlElementWrapper(useWrapping = false) public List<ABPair> getABPairs() { return abPairs; } public Document addABPair(ABPair pair) { abPairs.add(pair); return this; } } public static class ABPair { private String a; private String b; public String getA() { return a; } public String getB() { return b; } public ABPair setA(String a) { this.a = a; return this; } public ABPair setB(String b) { this.b = b; return this; } }However, the @JsonUnwrapped does not seem to work in conjunction with useWrapping = false.
Unit test reproducing the problem:
@Test public void test() throws JsonProcessingException { XmlMapper mapper = new XmlMapper(); Document document = new Document() .addABPair(new ABPair().setA("A1").setB("B1")) .addABPair(new ABPair().setA("A2").setB("B2")) .addABPair(new ABPair().setA("A3").setB("B3")); assertEquals("<document><a>A1</a><b>B1</b><a>A2</a><b>B2</b><a>A3</a><b>B3</b></document>", mapper.writeValueAsString(document)); }The actual result is "<document><abpairs><a>A1</a><b>B1</b></abpairs><abpairs><a>A2</a><b>B2</b></abpairs><abpairs><a>A3</a><b>B3</b></abpairs></document>".
Is there a way to get this working in Jackson?
Metadata
Metadata
Assignees
Labels
No labels