1、定义类型转换器
@XmlType(name = "MapConvertor")
@XmlAccessorType(XmlAccessType.FIELD)
public class MapConvertor {
private List<MapEntry> entries = new ArrayList<MapEntry>();
public void addEntry(MapEntry entry) {
entries.add(entry);
}
public static class MapEntry {
public MapEntry() {
super();
}
public MapEntry(Map.Entry<Object, Object> entry) {
super();
this.key = entry.getKey();
this.value = entry.getValue();
}
public MapEntry(Object key, Object value) {
super();
this.key = key;
this.value = value;
}
private Object key;
private Object value;
public Object getKey() {
return key;
}
public void setKey(Object key) {
this.key = key;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
public List<MapEntry> getEntries() {
return entries;
}
}
2、定义Map适配器
public class MapAdapter extends XmlAdapter<MapConvertor, Map<Object, Object>> {
@Override
public MapConvertor marshal(Map<Object, Object> map) throws Exception {
MapConvertor convertor = new MapConvertor();
for (Map.Entry<Object, Object> entry : map.entrySet()) {
MapConvertor.MapEntry e = new MapConvertor.MapEntry(entry);
convertor.addEntry(e);
}
return convertor;
}
@Override
public Map<Object, Object> unmarshal(MapConvertor map) throws Exception {
Map<Object, Object> result = new HashMap<Object, Object>();
for (MapConvertor.MapEntry e : map.getEntries()) {
result.put(e.getKey(), e.getValue());
}
return result;
}
}
@XmlJavaTypeAdapter(MapAdapter.class)
Map<String, String> getData();
如上步骤就可以使用Map返回数据了