Java List Map转换成List T

您所在的位置:网站首页 map转换成json对象 Java List Map转换成List T

Java List Map转换成List T

2023-12-03 14:39| 来源: 网络整理| 查看: 265

一)背景

主要是为了实现数据之间的转换,方便数据展示。

使用场景:当从数据库中查询出来的数据可能是List类型,可能会需要转换成具体的List格式。

  二)List转换成List

功能:传入List数据和需要转换的Class对象,返回一个List数据集合

实现方式:Java反射方式

 

实现源码:

package com.oysept.utils; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; public class ListMapToBeanUtils { /** * List转List */ public static List castMapToBean(List list, Class clazz) throws Exception { if (list == null || list.size()==0) { return null; } List tList = new ArrayList(); // 获取类中声明的所有字段 Field[] fields = clazz.getDeclaredFields(); T t; for (Map map : list) { // 每次都先初始化一遍,然后再设置值 t = clazz.newInstance(); for (Field field : fields) { // 把序列化的字段去除掉 if (!"serialVersionUID".equals(field.getName())) { // 由于Field都是私有属性,所有需要允许修改 field.setAccessible(true); // 设置值, 类型要和vo中的属性名称对应好,不然会报类型转换错误 field.set(t, map.get(field.getName())); } } tList.add(t); // 把转换好的数据添加到集合中 } return tList; } }

 

三)实体类PhoneVO.java package com.oysept.bean; import java.io.Serializable; /** * 实体类 * @author ouyangjun */ public class PhoneVO implements Serializable { private static final long serialVersionUID = 1L; private String plate; private Long number; private Double memory; private Double size; public String getPlate() { return plate; } public void setPlate(String plate) { this.plate = plate; } public Long getNumber() { return number; } public void setNumber(Long number) { this.number = number; } public Double getMemory() { return memory; } public void setMemory(Double memory) { this.memory = memory; } public Double getSize() { return size; } public void setSize(Double size) { this.size = size;} }

 

四)数据转换测试类 package com.oysept.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.oysept.bean.PhoneVO; import com.oysept.utils.ListMapToBeanUtils; public class ListToBeanTest { public static void main(String[] args) throws Exception { // 初始化 Map map = new HashMap(); map.put("plate", "hw"); map.put("number", 13655555555L); map.put("memory", 4.0); map.put("size", 6.0); Map map1 = new HashMap(); map1.put("plate", "vivo"); map1.put("number", 13677777777L); map1.put("memory", 5.5); map1.put("size", 3.8); List list = new ArrayList(); list.add(map); list.add(map1); // List转List List phoneList = ListMapToBeanUtils.castMapToBean(list, PhoneVO.class); System.out.println("==>phoneList.size(): " + phoneList.size()); for (PhoneVO phone : phoneList) { System.out.println(phone.getPlate() + "\t" + phone.getNumber() + "\t" + phone.getMemory() + "\t" + phone.getSize()); } } }

数据转换打印效果图:

 

五)数据转换之JSON方式

实现方式:下面提供一个用com.alibaba.fastjson实现List转List的方法。

实现原理:先把List格式的数据转换成json字符串,再把json字符串转换成List格式。

 

在maven项目中pom.xml文件导入jar包

com.alibaba fastjson 1.2.66

 

实现源码:

package com.oysept.utils; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSONObject; /** * * @author ouyangjun */ public class ObjectToJsonUtils { /** * List转换List */ @SuppressWarnings("unchecked") public static List castMapToBean(List list, Class beanClass) { List returnList = new ArrayList(); if (list == null || list.size()==0) { return null; } String json = ""; for (Map map : list) { json = JSONObject.toJSONString(map); // 添加到集合中 returnList.add((T)JSONObject.parseObject(json, beanClass)); } // 返回 return returnList; } }

 

识别二维码关注个人微信公众号

本章完结,待续,欢迎转载!   本文说明:该文章属于原创,如需转载,请标明文章转载来源!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3