答案 0 :(得分:0)
您需要使用XmlAdapter
并覆盖marshal
和unmarshal
方法。
以下示例代码显示如何将Map<String,Boolean>
转换为XML,反之亦然:
public class MapAdapter extends XmlAdapter<MapElements[], Map<String, Boolean>> {
public MapAdapter() {
}
@Override
public MapElements[] marshal(Map<String, Boolean> v) throws Exception {
MapElements[] elements = new MapElements[v.size()];
int i = 0;
for (Map.Entry<String, Boolean> entry : v.entrySet()) {
elements[i++] = new MapElements(entry.getKey(), entry.getValue());
}
return elements;
}
@Override
public Map<String, Boolean> unmarshal(MapElements[] v) throws Exception {
Map<String, Boolean> map = new HashMap<>();
for (MapElements element : v) {
map.put(element.key, element.value);
}
return map;
}
}
class MapElements {
@XmlElement
public String key;
@XmlElement
public Boolean value;
public MapElements() {
}
public MapElements(String key, Boolean value) {
this.key = key;
this.value = value;
}
}
并在@XmlJavaTypeAdapter
字段上使用Map<String,Boolean>
注释,如下所示
@XmlJavaTypeAdapter(MapAdapter.class)
private Map<String, Boolean> map