使用BeanMapper把map和bean之间的转换,list<bean>和list<map>之间的转换(含测试)

来源:互联网 发布:淘宝网借贷 编辑:程序博客网 时间:2024/05/18 23:52
package com.zhiyou.video.test;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;


import org.omg.CORBA.PUBLIC_MEMBER;


import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.zhiyou.video.model.User;
import com.zhiyou.video.model.result;


import net.sf.cglib.beans.BeanMap;
import sun.tools.tree.ThisExpression;


public class beanToMap {


/////// 将bena转换成map/////////////
public static <T> Map<String, Object> beanToMaps(T bean) {
Map<String, Object> map = Maps.newHashMap();
if (bean != null) {
BeanMap map2 = BeanMap.create(bean);
Iterator iterator = map2.keySet().iterator();
while (iterator.hasNext()) {
Object key = (Object) iterator.next();
if (map2.get(key) != null) {
if ((!key.toString().equals("id")) && map2.get(key).toString().equals("0")) {
continue;


}
map.put(key.toString(), map2.get(key));


}
}
}
return map;
}


///////////////// 将map转换成bean//////////////////////
@SuppressWarnings("unchecked")
public static <T> T mapToBean(Map map, T t) {


BeanMap beanMap1 = BeanMap.create(t);
beanMap1.putAll(map);
// beanMap1.getBean();
// return t;


beanMap1.getBean();


return t;


}
///////// List<bean>转换成List<Map<String,Objetc>>///////////


public static <T> List<Map<String, Object>> objectsToMaps(List<T> listbean) {
List<Map<String, Object>> maps = Lists.newArrayList();
if (listbean == null || listbean.size() == 0) {
return null;
}
for (T bean : listbean) {
if (bean != null) {
Map<String, Object> beanToMaps = beanToMaps(bean);
maps.add(beanToMaps);
}
}
return maps;
}


////////////// list<Map<String,Object>>转换成List<bean>///////////////////////////////////////////////
public static <T> List<T> listmapToBean(List<Map<String, Object>> listmap, T t) {
List<T> list = Lists.newArrayList();
if (listmap == null || listmap.size() == 0) {
return null;
}


for (Map<String, Object> map : listmap) {
T t1 = null;
try {
t1 = (T) t.getClass().newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
T t2 = mapToBean(map, t1);
System.out.println("t2" + t2);
list.add(t2);
}
return list;


}


/**
* List<?> list 可以赋值任何类型,但是不能添加具体的类型

* List<Object> list 只能赋值List<Object>,但是可以添加任何类型

* List<?extends Object> list 与 List<?> list没区别

*/
public static void main(String[] args) {


/////////////// bean转化成map测试////////////////////

{  System.out.println("bean转化成map测试");
 User user=new User(); 
 user.setId(1); 
 user.setNickName("张三");
 Map<String , Object>usermap = beanToMaps(user); 
for (String Userkey :usermap.keySet()) 
System.out.println("user的simplename:"+Userkey+usermap.get(Userkey));
 
}
 
////////////// map转化成bean测试//////////////
System.out.println("map转化成bean测试");
 Map<String, ? extends Object>map=ImmutableMap.of("id",2,"nickName","李华"); 
 Map<String ,?>map2=ImmutableMap.copyOf(map);
 User user2=null; 
 try { 
 user2 =mapToBean(map2,User.class.newInstance());
 } catch(InstantiationException e) 
 {  e.printStackTrace(); 
 } catch (IllegalAccessException e)
 { 
          e.printStackTrace();
          }
 System.out.println("map转化来的bean:"+user2);
 


/////////// 将List<T>转换成List<map<String,object>>测试//////////////
System.out.println("将List<T>转换成List<map<String,object>>测试");
List<User>users=Lists.newArrayList(new User(1, "张三"),new User(2,"李华"));
List<Map<String ,Object>>listmap=objectsToMaps(users); 
for (int i = 0; i <listmap.size(); i++) 
{
 Map<String , Object>shuxing=listmap.get(i);
 Iterator<Entry<String , Object>>
 iterator=shuxing.entrySet().iterator();
 while(iterator.hasNext()){
 Entry<String , Object>entry=iterator.next(); 
 String key=entry.getKey();
 Object value=entry.getValue();
 System.out.println("属性名为:"+key+"属性值为:"+value);
 
 }
 
 }
////////////////////list<map>转换成list<bean>//////////////
System.out.println("list<map>转换成list<bean>");
Map<String , ?>map0=ImmutableMap.of("id",1,"nickName","张三","city","郑州");
Map<String , Object>map01=ImmutableMap.copyOf(map0);
Map<String , ?>map1=ImmutableMap.of("id",2,"nickName","李四","sex",3);
Map<String , Object>map11=ImmutableMap.copyOf(map1);

List<Map<String, Object>>listmap1=Lists.newArrayList(map01,map11);
List<User>users1=null;

try {
users1=listmapToBean(listmap1,User.class.newInstance());
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println(users);
for (User user1 : users) {

System.out.println("User的信息为:"+user1.getId()+user1.getNickName()+user1.getSex());
}




}

}

最后:第一篇文章,先试试水,欢迎留言!!!

阅读全文
0 0
原创粉丝点击