如何使用带有@xstreamimplicit的自定义转换器?

lhcgjxsq  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(336)

我试图转换一个hashmap,在结果输出中,我需要向 Package 标签添加一个属性。我有一个用于Map内容的自定义转换器,它可以工作:

xstream.registerConverter(new MapConverter());

xstream.alias("struct", Map.class);

HashMap<String,Object> test = new HashMap<String,Object>();
test.put("HELLO","WORLD");

String xml = xstream.toXML(test);
System.out.println(xml);

给了我:

<?xml version="1.0" ?>
<struct>
   <item key="HELLO" VALUE="WORLD"></item>
</struct>

但是,当我向自定义类添加hashmap,然后尝试序列化该类时,我不能使用@xstreamimplicit,在这种情况下,我的自定义转换器将被忽略:

@XStreamAlias("wrapper")
public class Wrapper {
   @XStreamImplicit
   private HashMap<String,String>;

   ... getters and setters ...
}

我得到的是:

<?xml version="1.0" ?>
<wrapper>
   <entry>
      <string>HELLO</string>
      <string>WORLD</string>
   </entry>
</wrapper>

我在输出中寻找的是:

<?xml version="1.0" ?>
<wrapper>
   <struct>
      <item key="HELLO" VALUE="WORLD"></item>
   </struct>
</wrapper>

看起来@xstreamimplicit完全忽略了我配置的转换器(我甚至尝试为map.entry添加一个转换器,以及通过注解指定转换器)。
我可以跳过 Package 器,但是xstream的别名系统似乎不允许向别名中添加任意属性。
有什么方法可以让xstream工作吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题