我试图转换一个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工作吗?
暂无答案!
目前还没有任何答案,快来回答吧!