java - 让 Jackson XMLMapper 在代码中设置根元素名称

标签 java json serialization jackson

如何让 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/

相关文章:

java - IE8下jsp页面div截图的方法

java - 行替换中的正则表达式

java - 有没有一个Java库来操作Clojure edn数据结构?

java - 按对象数组列表分组而不创建映射

序列化异常 : can't locate argument-less serializer

c++ - 使用 boost 序列化、std::tr1::unordered_map 和自定义键的奇怪行为

javascript - 如何修复未定义的错误 `Cannot read property ' setState'

javascript - 用动态创建的路径替换嵌套的 JavaScript 对象数据项?

json - 如何使用 LINQ 查询此 JSON 字符串?

python - 测试对象是否已在 Python 中使用 MsgPack 序列化