Jackson xml序列化地图,该键包含空格

时间:2016-03-06 14:15:46

标签: xml generics dictionary serialization jackson

我使用Jackson 2.5.2并且我有map<String,String>

默认情况下,杰克逊将其序列化为:

<MyObject>
 <map> 
  <key1>value1</key1> 
  <key2 containing spaces>value2</key2 containing spaces>
 <map>
</MyObject>

但我想要一个通用的xml标签:

<MyObject>
 <map> 
  <entry key="key1">value1</entry>
  <entry key="key2 containing spaces">value2</entry>
 <map>
</MyObject>

通过这种方式,我的xml标签是通用的,可以使用xsd

进行验证

这是我的测试

class MyObject {
    Map map = new HashMap();  
    public Map getMap() { return map;}
}
// Test
ObjectMapper xmlMapper = new XmlMapper();
MyObject myObject = new MyObject();
myObject.getMap().put("key1","value1");
myObject.getMap().put("key2 containing spaces","value2");
System.out.println(xmlMapper.writeValueAsString(myObject));

是否有任何配置告诉Jackson序列化通用xml?

1 个答案:

答案 0 :(得分:0)

您可能想要针对此问题提交错误报告:对属性名称执行的操作是将空格替换为其他违规字符(或剥离它们)。但是存在可靠地转换名称的问题;如果属性很容易(只是地图修改/剥离名称),但对于地图,它可能是也可能是不可能的。

相关问题