How do I get Jackson’s XMLMapper to set the name of the root xml element when serializing?
There’s an annotation to do it, if you’re serializing a pojo: @XmlRootElement(name=”blah”). But I’m serializing a generic Java class, LinkedHashMap, so I can’t use an annotation.
There’s probably some switch somewhere to set it. Poking around in Jackson code, I see a class named SerializationConfig.withRootName(), but I’ve no clue how to use it.
Advertisement
Answer
You can override the root element of the XML output using the ObjectWriter.withRootName method. Here is example:
public class JacksonXmlMapper {
public static void main(String[] args) throws JsonProcessingException {
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("field1", "v1");
map.put("field2", 10);
XmlMapper mapper = new XmlMapper();
System.out.println(mapper
.writer()
.withRootName("root")
.writeValueAsString(map));
}
}
Output:
<root><field1>v1</field1><field2>10</field2></root>