java1234 webservice 第2 課 map等其餘數據傳輸

1.當返回值爲map時候java

須要加註解: 轉換成List<T>,數據,而且Key值插入到T的屬性中!程序員

Mapdapter.class
package com.java1234.adapter;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.bind.annotation.adapters.XmlAdapter;

import com.java1234.entity.MyRole;
import com.java1234.entity.Role;

public class MapAdapter extends XmlAdapter<MyRole[], Map<String,List<Role>>>{

	/**
	 * 適配轉換 MyRole[] -> Map<String, List<Role>>
	 */
	@Override
	public Map<String, List<Role>> unmarshal(MyRole[] v) throws Exception {
		Map<String, List<Role>> map=new HashMap<String,List<Role>>();
		for(int i=0;i<v.length;i++){
			MyRole r=v[i];
			map.put(r.getKey(), r.getValue());
		}
		return map;
	}

	/**
	 * 適配轉換 Map<String, List<Role>> -> MyRole[]
	 */
	@Override
	public MyRole[] marshal(Map<String, List<Role>> v) throws Exception {
		MyRole[] roles=new MyRole[v.size()];
		int i=0;
		for(String key:v.keySet()){
			roles[i]=new MyRole();
			roles[i].setKey(key);
			roles[i].setValue(v.get(key));
			i++;
		}
		return roles;
	}

}

myRoleweb

package com.java1234.entity;

import java.util.List;

/**
 * 自定義實體 cxf能接受
 * @author Administrator
 *
 */
public class MyRole {

	private String key;
	private List<Role> value;
	
	public String getKey() {
		return key;
	}
	public void setKey(String key) {
		this.key = key;
	}
	public List<Role> getValue() {
		return value;
	}
	public void setValue(List<Role> value) {
		this.value = value;
	}
	
	
}

 

 

 

client 調用的方法是:數組

package com.java1234.webservice;

import java.util.List;

public class Client {
	
	 public static void main(String[] args) {
		HelloWorldService service=new HelloWorldService();
		HelloWorld helloWorld=service.getHelloWorldPort();
		
		
		
		/*
		 *數據只能傳輸List<T>,不能傳輸map,因此map的key放入T中,即可以輕鬆傳輸! 
		 */
		MyRoleArray arry = helloWorld.getRoles();
		 List<MyRole>   roleList= arry.item;
		
		 for(int i=0; i<roleList.size();i++){
			 
			 MyRole my=roleList.get(i);
			 System.out.println(my.key+":");
			 for(Role r:my.value){
				 System.out.println(r.getId()+","+r.getRoleName());
			 }
			 System.out.println("========================");
		 }
		 
		
		
		
	}

}

 

實現的代碼是:架構

/**
	 * 注意 cfx 不支持map,因此須要將map的key和value轉換爲bean,以數組存儲!傳輸!
	 */
	public Map<String, List<Role>> getRoles() {
		Map<String,List<Role>> map=new HashMap<String,List<Role>>();
		List<Role> roleList1=new ArrayList<Role>();
		roleList1.add(new Role(1,"技術總監"));
		roleList1.add(new Role(2,"架構師"));
		map.put("java1234", roleList1);
		
		List<Role> roleList2=new ArrayList<Role>();
		roleList2.add(new Role(3,"程序員"));
		map.put("jack", roleList2);
		
		return map;
	}

 

運行結果shi:ide

jack: 3,程序員 ======================== java1234: 1,技術總監 2,架構師 ========================  
相關文章
相關標籤/搜索