CXF中的类型转换

         在WebService中消息的传递可以是原生数据类型、String、List、Set等,但是对于Map型的数据类型就需要通过相应的转换才能传递。

    实例:

      @WebService
public interface Helloworld {
public String   sayHello(String name);
public List<Cat> getCatByUserName(User user);
public @XmlJavaTypeAdapter(value = Adapter.class) Map<String,Cat> getCat();
}   //该WebService 中含有map类型数据的传递,侧需要通过@XmlJavaTypeAdapter  注解接口来实现,其中value表示我们自定义的转换类,定义的转换类需要继承XmlAdapter<?,#>其中?表示我们转换之后的类型,#表示原类型

     package util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import bean.Cat;
public class Adapter extends XmlAdapter<MyMap, Map<String,Cat>> {
@Override
public Map<String, Cat> unmarshal(MyMap v) throws Exception {  // 复写方法 :转换回来
Map<String,Cat> map=new HashMap<String,Cat>();
    List<bean.Entry> list=v.getList();
  for(bean.Entry entry:list)
  {
  map.put(entry.getNum(), entry.getCat());
  }
  
return map;
}


@Override
public MyMap marshal(Map<String, Cat> v) throws Exception {  // 复写方法 :转换过去
MyMap myMap=new MyMap();
List<bean.Entry> list=new ArrayList<bean.Entry>();
bean.Entry entry=null;
   Set<java.util.Map.Entry<String,Cat>> set=v.entrySet();
for(Iterator<java.util.Map.Entry<String,Cat>> iter=set.iterator();iter.hasNext();)
  {
java.util.Map.Entry<String,Cat> t=iter.next();
entry=new bean.Entry();
  entry.setNum(t.getKey());
  entry.setCat(t.getValue());
  list.add(entry);
  }
myMap.setList(list);
return myMap;
}
}


public class Cat {
    
private int id;
private String name;
private String password;

   //省略setter、getter

}

   public class Entry {


private String num;
private Cat cat;

//省略setter、getter

}

public class MyMap {

private List<Entry> list;

//省略setter、getter

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值