问题:
我正在尝试在JAX-RS应用程序中使用JAX-B对HashMap进行简单的序列化,并运行到我想避免的额外输出。 HashMap的默认序列化包括无用的XML命名空间和前缀(对于我的应用程序)。
我为Map获得的输出是:
<params>
<entry>
<key xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">keyName</key>
<value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">123</value>
</entry>
...
</params>
而不是:
<params>
<entry>
<key>keyName</key>
<value>123</value>
</entry>
...
</params>
课程基本上如此布局:
@XmlRootElement(name="example")
public ExampleClass
{
private params HashMap<String,Object> = new HashMap<String,Object>();
public ExampleClass() { }
@XmlElementWrapper(name="params", required=true)
public Map getParameters()
{
return params;
}
}
可以做些什么来简化XML输出?
图书馆参考:
答案 0 :(得分:4)
由于您的地图不使用泛型,序列化程序会写入每个元素值的数据类型。
尝试使用:
public Map<String,String> getParameters()
即使您使用Map<String,Object>
,序列化程序也必须编写相应类型的value元素。