如何让 Jackson 的 XMLMapper 在序列化时设置根 xml 元素的名称?
如果你正在序列化一个 pojo,有一个注解可以做到这一点:@XmlRootElement(name="blah")。但是我正在序列化一个通用 Java 类 LinkedHashMap,所以我不能使用注释。
可能在某个地方有一些开关可以设置它。在 Jackson 代码中四处寻找,我看到一个名为 SerializationConfig.withRootName() 的类,但我不知道如何使用它。
最佳答案
您可以使用 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>
关于java - 让 Jackson XMLMapper 在代码中设置根元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24070531/