获取Jackson XMLMapper以在代码中设置根元素名称

时间:2014-06-05 21:32:48

标签: java json serialization jackson

如何在序列化时让Jackson的XMLMapper设置根xml元素的名称?

如果要序列化pojo,有一个注释要做:@XmlRootElement(name =“blah”)。但我正在序列化一个通用的Java类LinkedHashMap,所以我不能使用注释。

可能有某些开关设置它。在Jackson代码中查看,我看到一个名为SerializationConfig.withRootName()的类,但我不知道如何使用它。

1 个答案:

答案 0 :(得分:16)

您可以使用ObjectWriter.withRootName方法覆盖XML输出的根元素。这是一个例子:

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));

    }
}

输出:

<root><field1>v1</field1><field2>10</field2></root>