WebService处理Map

【WebService处理Map】2019独角兽企业重金招聘Python工程师标准>>> WebService处理Map
文章图片

遇到cxf自己不能处理的数据,如cxf不能自己处理Map对象,遇到这种情况需要开发工程师自己写代码处理 1.@XmlJavaTypeAdapter:该注解修饰不能处理的类型,该注解jDK自带的,通过value指定一个转换器: //@XmlJavaTypeAdapter:该注解jDK自带的,通过value指定一个转换器 @XmlJavaTypeAdapter(value=https://www.it610.com/article/FKXMLAdapter.class)Map getAllCats(); FKXMLAdapter类是我们自己定义的. Map是cxf不能处理的类型. 2.FKXMLAdapter的代码如下 FKXMLAdapter继承XmlAdapter,用StringCat模拟Map /** * @author xp * @Title: FKXMLAdapter.java * @Package com.xp.cn.ws.adapter * @Description: TODO * @date 2016年5月1日 下午5:56:56 * @version V1.0 */ package com.xp.cn.ws.adapter; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.bind.annotation.adapters.XmlAdapter; import com.xp.cn.bean.Cat; import com.xp.cn.bean.StringCat; import com.xp.cn.bean.StringCat.Entry; /** * @author xp * @ClassName: FKXMLAdapter * @Description: TODO * @date 2016年5月1日 下午5:56:56 * ValueType:能解决的类型自定义为StringCat * BoundType:不能解决的类型Map * 实现集成的方法达到StringCat,Map之间的相互转换 */ public class FKXMLAdapter extends XmlAdapter> { @Override public Map unmarshal(StringCat v) throws Exception { Map map = new HashMap(); for (Entry entry : v.getEntries()) { System.out.println(entry.getKey()); map.put(entry.getKey(), entry.getValue()); } return map; } @Override public StringCat marshal(Map v) throws Exception { StringCat stringcat = new StringCat(); for (String key : v.keySet()) { stringcat.getEntries().add(new Entry("", v.get(key))); } return stringcat; }}3.StringCat的代码如下: /** * @author xp * @Title: StringCat.java * @Package com.xp.cn.ws.bean * @Description: TODO * @date 2016年5月1日 下午5:59:48 * @version V1.0 */ package com.xp.cn.bean; import java.util.ArrayList; import java.util.List; /** * @author xp * @ClassName: StringCat * @Description: TODO * @date 2016年5月1日 下午5:59:48 * Entry封装了Map信息 */public class StringCat { public static class Entry { private String key; private Cat value; public Entry() { }public Entry(String key, Cat value) { this.key = key; this.value = https://www.it610.com/article/value; }public String getKey() { return key; }public void setKey(String key) { this.key = key; }public Cat getValue() { return value; }public void setValue(Cat value) { this.value = value; } } private List entries = new ArrayList(); public List getEntries() { return entries; } public void setEntries(List entries) { this.entries = entries; } }




转载于:https://my.oschina.net/u/2253438/blog/668741

    推荐阅读