提供网站建设的公司,张家口网站建设制作,商务网站策划方案,双体系建设网站提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 常用的map转bean互转方法一、hutool工具类二、fastjson工具类三、beanutils_BeanUtils工具类 不太好用四、cglib BeanMap工具类 不太好用五、reflect 反射来玩 不太好玩六、I… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 常用的map转bean互转方法一、hutool工具类二、fastjson工具类三、beanutils_BeanUtils工具类 不太好用四、cglib BeanMap工具类 不太好用五、reflect 反射来玩 不太好玩六、Introspector类 不太好用总结一、hutool工具类
这个很常用还支持将蛇形转成驼如apply_time 会赋值到applyTime上
LTDemo ltDemo BeanUtil.mapToBean(map, LTDemo.class, true, CopyOptions.create());MapString, Object demoMap BeanUtil.beanToMap(ltDemo);System.out.println(输出map - bean: ltDemo.toString());System.out.println(输出bean - map : demoMap);System.out.println(ltDemo.getApplyTime());System.out.println(ltDemo.getChildren());ltDemo.getChildren().forEach(children - System.out.println(children.toString()));ltDemo.getChildren().forEach(children - System.out.println(children.getAddress()));输出原生map: {address上海市, children[{address上海市, name小张, apply_timeFri Mar 03 17:21:01 CST 2023, age2}], name张三, apply_timeFri Mar 03 17:21:01 CST 2023, age20}
输出map - bean: LTDemo(name张三, age20, address上海市, applyTimeFri Mar 03 17:21:01 CST 2023, children[LTDemo(name小张, age2, address上海市, applyTimeFri Mar 03 17:21:01 CST 2023, children[])])
输出bean - map : {name张三, age20, address上海市, applyTimeFri Mar 03 17:21:01 CST 2023, children[LTDemo(name小张, age2, address上海市, applyTimeFri Mar 03 17:21:01 CST 2023, children[])]}
Fri Mar 03 17:21:01 CST 2023
[LTDemo(name小张, age2, address上海市, applyTimeFri Mar 03 17:21:01 CST 2023, children[])]
LTDemo(name小张, age2, address上海市, applyTimeFri Mar 03 17:21:01 CST 2023, children[])
上海市
二、fastjson工具类
这个也很常用也支持将蛇型转成驼峰 如apply_time 会赋值到applyTime上
LTDemo ltDemo JSONObject.parseObject(JSONObject.toJSONString(map), LTDemo.class);Map demoMap JSONObject.parseObject(JSONObject.toJSONString(ltDemo), Map.class);System.out.println(输出map - bean: ltDemo.toString());System.out.println(输出bean - map : demoMap);System.out.println(ltDemo.getApplyTime());System.out.println(ltDemo.getChildren());ltDemo.getChildren().forEach(children - System.out.println(children.toString()));ltDemo.getChildren().forEach(children - System.out.println(children.getAddress())); 输出原生map: {address上海市, children[{address上海市, name小张, apply_timeFri Mar 03 17:21:59 CST 2023, age2}], name张三, apply_timeFri Mar 03 17:21:59 CST 2023, age20}
输出map - bean: LTDemo(name张三, age20, address上海市, applyTimeFri Mar 03 17:21:59 CST 2023, children[LTDemo(name小张, age2, address上海市, applyTimeFri Mar 03 17:21:59 CST 2023, children[])])
输出bean - map : {address上海市, children[{address:上海市,children:[],name:小张,applyTime:1677835319813,age:2}], name张三, applyTime1677835319813, age20}
Fri Mar 03 17:21:59 CST 2023
[LTDemo(name小张, age2, address上海市, applyTimeFri Mar 03 17:21:59 CST 2023, children[])]
LTDemo(name小张, age2, address上海市, applyTimeFri Mar 03 17:21:59 CST 2023, children[])
上海市
三、beanutils_BeanUtils工具类 不太好用
嵌套型map转换会有问题且不支持蛇型转成驼峰 //------------------- beanutils_BeanUtils -----------------//map转java对象public static T T beanUtils_mapToObject(MapString, Object map, ClassT clazz) throws Exception {if (map null) {return null;}T bean clazz.newInstance();BeanUtils.populate(bean, map);return bean;}LTDemo ltDemo beanUtils_mapToObject(map, LTDemo.class);System.out.println(输出map - bean: ltDemo.toString());System.out.println(ltDemo.getApplyTime());System.out.println(ltDemo.getChildren().get(0).getApplyTime());输出map - bean: LTDemo(name张三, age20, address上海市, applyTimeFri Mar 03 17:04:38 CST 2023, children[{address上海市, name小张, applyTimeFri Mar 03 17:04:38 CST 2023, age2}])
Fri Mar 03 17:04:38 CST 2023
Exception in thread main java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemoat com.example.demo.map2bean.MapToBean.main(MapToBean.java:73)
四、cglib BeanMap工具类 不太好用
这个也很常用也支持将蛇形转成驼如apply_time 会赋值到applyTime上
import net.sf.cglib.beans.BeanMap;// ------------------- cglib BeanMap -------------------//map对象转javapublic static T T BeanMapMapToObject(MapString, Object map, ClassT beanClass) throws Exception {T object beanClass.newInstance();BeanMap beanMap BeanMap.create(object);beanMap.putAll(map);return object;}//java对象转mappublic static MapString, Object BeanMapObjectToMap(Object obj) {MapString, Object map Maps.newHashMap();if (obj ! null) {BeanMap beanMap BeanMap.create(obj);for (Object key : beanMap.keySet()) {map.put(key , beanMap.get(key));}}return map;} LTDemo ltDemo beanMapMapToObject(map, LTDemo.class);Map demoMap beanMapObjectToMap(ltDemo);System.out.println(输出map - bean: ltDemo.toString());System.out.println(输出bean - map : demoMap);System.out.println(ltDemo.getApplyTime());System.out.println(ltDemo.getChildren());ltDemo.getChildren().forEach(children - System.out.println(children.toString()));
输出原生map: {address上海市, children[{address上海市, name小张, apply_timeFri Mar 03 17:12:45 CST 2023, age2}], name张三, apply_timeFri Mar 03 17:12:45 CST 2023, age20}
输出map - bean: LTDemo(name张三, age20, address上海市, applyTimenull, children[{address上海市, name小张, apply_timeFri Mar 03 17:12:45 CST 2023, age2}])
输出bean - map : {address上海市, children[{address上海市, name小张, apply_timeFri Mar 03 17:12:45 CST 2023, age2}], name张三, applyTimenull, age20}
null
[{address上海市, name小张, apply_timeFri Mar 03 17:12:45 CST 2023, age2}]
Exception in thread main java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemoat java.util.ArrayList.forEach(ArrayList.java:1259)at com.example.demo.map2bean.MapToBean.main(MapToBean.java:75)
五、reflect 反射来玩 不太好玩 //------------------- reflect -------------------//map转java对象public static Object reflectMapToObject(MapString, Object map, Class? beanClass) throws Exception {if (map null) {return null;}Object object beanClass.newInstance();Field[] fields beanClass.getDeclaredFields();for (Field field : fields) {int mod field.getModifiers();if (Modifier.isFinal(mod) || Modifier.isStatic(mod)) {continue;}field.setAccessible(true);field.set(object, map.get(field.getName()));}return object;}//java对象转mappublic static MapString, Object reflectObjectToMap(Object obj) throws Exception {if (obj null) {return null;}MapString, Object map new HashMapString, Object();Field[] declaredFields obj.getClass().getDeclaredFields();for (Field field : declaredFields) {field.setAccessible(true);map.put(field.getName(), field.get(obj));}return map;}LTDemo ltDemo reflectMapToObject(map,LTDemo.class);Map demoMap reflectObjectToMap(ltDemo);System.out.println(输出map - bean: ltDemo.toString());System.out.println(输出bean - map : demoMap);System.out.println(ltDemo.getApplyTime());System.out.println(ltDemo.getChildren());ltDemo.getChildren().forEach(children - System.out.println(children.toString()));输出原生map: {address上海市, children[{address上海市, name小张, apply_timeFri Mar 03 17:16:35 CST 2023, age2}], name张三, apply_timeFri Mar 03 17:16:35 CST 2023, age20}
输出map - bean: LTDemo(name张三, age20, address上海市, applyTimenull, children[{address上海市, name小张, apply_timeFri Mar 03 17:16:35 CST 2023, age2}])
输出bean - map : {address上海市, children[{address上海市, name小张, apply_timeFri Mar 03 17:16:35 CST 2023, age2}], name张三, applyTimenull, age20}
null
[{address上海市, name小张, apply_timeFri Mar 03 17:16:35 CST 2023, age2}]
Exception in thread main java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemoat java.util.ArrayList.forEach(ArrayList.java:1259)at com.example.demo.map2bean.MapToBean.main(MapToBean.java:84)六、Introspector类 不太好用
这个用起来只能转换第一层而且不支持蛇型转驼峰 import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;//----------------- Introspector ------------------//map转java对象public static T T introspector_mapToObject(MapString, Object map, ClassT clazz) throws Exception {if (map null) {return null;}T bean clazz.newInstance();BeanInfo beanInfo Introspector.getBeanInfo(bean.getClass());PropertyDescriptor[] propertyDescriptors beanInfo.getPropertyDescriptors();for (PropertyDescriptor property : propertyDescriptors) {Method setter property.getWriteMethod();if (setter ! null) {setter.invoke(bean, map.get(property.getName()));}}return bean;}//java对象转mappublic static MapString, Object introspector_objectToMap(Object obj) throws Exception {if (obj null) {return null;}MapString, Object map new HashMapString, Object();BeanInfo beanInfo Introspector.getBeanInfo(obj.getClass());PropertyDescriptor[] propertyDescriptors beanInfo.getPropertyDescriptors();for (PropertyDescriptor property : propertyDescriptors) {String key property.getName();if (key.compareToIgnoreCase(class) 0) {continue;}Method getter property.getReadMethod();Object value getter ! null ? getter.invoke(obj) : null;map.put(key, value);}return map;}LTDemo ltDemo introspector_mapToObject(map, LTDemo.class);Map demoMap introspector_objectToMap(ltDemo);System.out.println(输出map - bean: ltDemo.toString());System.out.println(输出bean - map : demoMap);System.out.println(ltDemo.getApplyTime());System.out.println(ltDemo.getChildren());System.out.println(ltDemo.getChildren().get(0).toString());
输出原生map: {address上海市, children[{address上海市, name小张, apply_timeFri Mar 03 16:56:37 CST 2023, age2}], name张三, apply_timeFri Mar 03 16:56:37 CST 2023, age20}
输出map - bean: LTDemo(name张三, age20, address上海市, applyTimenull, children[{address上海市, name小张, apply_timeFri Mar 03 16:56:37 CST 2023, age2}])
输出bean - map : {address上海市, children[{address上海市, name小张, apply_timeFri Mar 03 16:56:37 CST 2023, age2}], name张三, applyTimenull, age20}
null
[{address上海市, name小张, apply_timeFri Mar 03 16:56:37 CST 2023, age2}]
Exception in thread main java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemoat com.example.demo.map2bean.MapToBean.main(MapToBean.java:65)
总结
不想说啥…看着用吧