JAXB Annotations - Marshall List<String[]>

jakarta-ee, java, jaxb, marshalling, xml

Solution

You need to add `Parameter` class to hold `name` and `type`. And change `List<String[]>` to `List<Parameter>`.

This way you can more easily control the XML parsing of the parameter object.

And use:

@XmlElementWrapper(name="parameters")
@XmlElement(name="parameter")
private List<Parameter> parameters;

and:

public class Parameter{

    private String name;
    private String type;
...

}

Problem

I have this simple object: ``` @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SimilarityInfoResult { private String name; private List<String[]> parameters; public SimilarityInfoResult() { } public SimilarityInfoResult(String name, List<String[]> parameters) { this.name = name; this.parameters = parameters; } ... } ``` It is mapped as this: ``` <similarityInfoResult> <name>SubstructureSimilarity</name> <parameters> <item>treshold</item> <item>Double</item> </parameters> <parameters> <item>numberOfResults</item> <item>Integer</item> </parameters> </similarityInfoResult> ``` Desired output: ``` <similarityInfoResult> <name>SubstructureSimilarity</name> <parameters> <parameter> <name>treshold</name> <type>Double</type> </parameter> <parameter> <name>results</name> <type>Integer</type> </parameter> </parameters> </similarityInfoResult> ``` How should I do this using annotations? Is it possible? Maybe I will have to make special parameter object and `List<Parameter>`? Thank you

Original source