Hello|Hello Mr.J——WebService传递Map类型
上篇博客提到了,WebService不能传递Map类型的数据,然而我还是找到了一种方法可以传过去,用的就是JDK自带的适配器。
比如,上篇博客中,我的代码出现了这样一段。
@WebMethod
@XmlJavaTypeAdapter(MapAdapter.class)
@WebResult(partName = "return")
Map queryProfessionalByCollageId(
@WebParam(name = "collageId") String collageId, @WebParam(name = "dataBaseName") String dataBaseName, @WebParam(name = "name") String name);
这个就是使用了XmlJavaTypeAdapter这个注解,注解中写的类是我们自己对这个Map进行处理的类。
public class MapAdapter extends XmlAdapter {@Override
public MapConvertor marshal(Map map) throws Exception {
MapConvertor convertor = new MapConvertor();
for (Map.Entry entry : map.entrySet()) {
MapConvertor.MapEntry e = new MapConvertor.MapEntry(entry);
convertor.addEntry(e);
}
return convertor;
}@Override
public Map unmarshal(MapConvertor map) throws Exception {
Map result = new HashMap();
for (MapConvertor.MapEntry e : map.getEntries()) {
result.put(e.getKey(), e.getValue());
}
return result;
}
}
还有一个转换之后的实体类。
@XmlType(name = "MapConvertor")
@XmlAccessorType(XmlAccessType.FIELD)
public class MapConvertor {
private List entries = new ArrayList();
public void addEntry(MapEntry entry) {
entries.add(entry);
}public void setEntries(List entries) {
this.entries = entries;
}public List getEntries() {
return entries;
}public static class MapEntry {private String key;
private Object value;
public MapEntry() {
super();
}public MapEntry(Map.Entry entry) {
super();
this.key = entry.getKey();
this.value = https://www.it610.com/article/entry.getValue();
}public MapEntry(String key, Object value) {
super();
this.key = key;
this.value = value;
}public String getKey() {
return key;
}public void setKey(String key) {
this.key = key;
}public Object getValue() {
return value;
}public void setValue(Object value) {
this.value = value;
}
}
}
然后我们在客户端调用的时候会返回一个MapConventor类型的对象,这个时候我们直接使用 getEntries()方法,可以获得一个list.
【Hello|Hello Mr.J——WebService传递Map类型】对这个list进行处理循环放到map里面就能和应该返回的结果一样了,下篇搞客户端的时候补代码- -。
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术