WebService处理Map
2016-05-02 23:48
281 查看
摘要: WebService处理Map
遇到cxf自己不能处理的数据,如cxf不能自己处理Map对象,遇到这种情况需要开发工程师自己写代码处理 1.@XmlJavaTypeAdapter:该注解修饰不能处理的类型,该注解jDK自带的,通过value指定一个转换器: //@XmlJavaTypeAdapter:该注解jDK自带的,通过value指定一个转换器 @XmlJavaTypeAdapter(value=FKXMLAdapter.class)Map<String, Cat> getAllCats(); FKXMLAdapter类是我们自己定义的. Map<String, Cat>是cxf不能处理的类型. 2.FKXMLAdapter的代码如下 FKXMLAdapter继承XmlAdapter,用StringCat模拟Map<String, Cat> /** * @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<String, Cat> * 实现集成的方法达到StringCat,Map<String, Cat>之间的相互转换 */ public class FKXMLAdapter extends XmlAdapter<StringCat, Map<String, Cat>> { @Override public Map<String, Cat> unmarshal(StringCat v) throws Exception { Map<String, Cat> map = new HashMap<String, Cat>(); for (Entry entry : v.getEntries()) { System.out.println(entry.getKey()); map.put(entry.getKey(), entry.getValue()); } return map; } @Override public StringCat marshal(Map<String, Cat> 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 = 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<Entry> entries = new ArrayList<Entry>(); public List<Entry> getEntries() { return entries; } public void setEntries(List<Entry> entries) { this.entries = entries; } }
相关文章推荐
- Docker 快速入门教程
- mysql 正则表达式的匹配
- Apache Maven项目提供的JAR插件详解
- Eclipse的插件EGIT使用教程
- C++ 面向对象实验(三)
- Python开源爬虫框架:Scrapy架构分析
- 数据库期中考试题库
- hive无法连接到mysql数据库debug记录
- 配置OpenGL时遇到的一些问题
- Linux基础之终端、控制台、tty、pty等概念简介
- redis事务详解
- Linux中如何设置java环境变量
- Memcache-Java-Client-Release源码阅读(之五)
- hibernate注解(二)
- Spark性能优化:JVM参数调优
- java基础打印三角形
- 开始新篇章
- 电话拨号器
- JAVA实现socket5代理
- 记一次PHP面试