首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jackson-dataformat-xml库将属性设置为空xml标记

使用jackson-dataformat-xml库将属性设置为空xml标记
EN

Stack Overflow用户
提问于 2021-11-11 09:40:53
回答 1查看 212关注 0票数 0

我有HashMap,它被序列化为xml。当对象为空时

代码语言:javascript
复制
HashMap<String, Object> h1 = new HashMap<>();
h1.put("test", null);
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(h1));

杰克逊产生了这样的东西

代码语言:javascript
复制
<HashMap>
   <test/>
</HashMap>

所以我需要在这个空标签中添加属性

代码语言:javascript
复制
<HashMap>
   <test attribute = "something"/>
</HashMap>

有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-11 10:17:21

你可以这样做..。

而不是null,您需要使用类似于它的薄包装器,这将指示XmlMapper打印该属性信息。

这是一个解决问题的工作测试。

代码语言:javascript
复制
public class TestXml {
    
    class NullWrapper {
        @JacksonXmlProperty(isAttribute = true)
        private String attribute = "something";
    }

    @Test
    void test() throws JsonProcessingException {
        var mapper = new XmlMapper();
        var h1 = new HashMap<>();
        h1.put("test", new NullWrapper());
        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(h1));
    }
}

输出是..。

代码语言:javascript
复制
<HashMap>
  <test attribute="something"/>
</HashMap>

这能解决你的问题吗?在评论中告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69926101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档