Java关于实体对象和Map对象之间的转换
来源:互联网 发布:centos vsftpd 编辑:程序博客网 时间:2024/05/18 04:45
在工作中,我们多多少少会遇到这样的情况:需要将对象的个别属性和对应的值存放到Map对象中。其实属性相对少的时候还是比较方便的,我们完完全全手动写入下就能解决;但要是放入的属性特别的多,需要写的地方也特别多的时候,再这么手动写的话,这个工作量还是不小的。
所以与其手动写入,倒不如直接统一处理下。下面来看看代码:
/** * 实体对象转成Map * @param obj 实体对象 * @return */ public static Map<String, Object> object2Map(Object obj) { Map<String, Object> map = new HashMap<>(); if (obj == null) { return map; } Class clazz = obj.getClass(); Field[] fields = clazz.getDeclaredFields(); try { for (Field field : fields) { field.setAccessible(true); map.put(field.getName(), field.get(obj)); } } catch (Exception e) { e.printStackTrace(); } return map; }
我这里主要是用的反射的写法,至于其他的方法暂时还没有想到。这里我将所有实体类的属性及其对应的值放入了map当中,而且HashMap也是允许null键和值存在的,所以就不用考虑null这种情况。
实体对象可以转成Map,那么Map必然也可转成实体对象,具体的代码如下:
/** * Map转成实体对象 * @param map map实体对象包含属性 * @param clazz 实体对象类型 * @return */ public static Object map2Object(Map<String, Object> map, Class<?> clazz) { if (map == null) { return null; } Object obj = null; try { obj = clazz.newInstance(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { int mod = field.getModifiers(); if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) { continue; } field.setAccessible(true); field.set(obj, map.get(field.getName())); } } catch (Exception e) { e.printStackTrace(); } return obj; }
下面我就来测试下,看下具体的效果:
1.先写一个实体类Student
class Student { private String userName; private String age; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "Student [userName=" + userName + ", age=" + age + "]"; }}
2.在写个主方法测试下结果
public static void main(String[] args) { Student s = new Student(); s.setUserName("ZHH"); s.setAge("24"); System.out.println(object2Map(s)); Map<String, Object> map = new HashMap<>(); map.put("userName", "zhh"); map.put("age", "24"); System.out.println(map2Object(map, Student.class)); }
运行结果如下:
{userName=ZHH, age=24}Student [userName=zhh, age=24]
如上,证明该方法可行。
阅读全文
0 0
- Java关于实体对象和Map对象之间的转换
- map和对象之间的转换
- 关于Java对象和XML之间的相互转换
- java 实体类与xml之间的相互转换,利用XStream在Java对象和XML之间相互转换
- java 对象和map的相互转换
- java--09--对象与JSON与Map之间的转换
- Java对象和XML之间的转换
- XML和Java对象之间的转换
- json和java对象之间的转换
- java对象和Map之间互相转换的三种实现方式
- 字符串、Json对象和Java对象之间的转换
- json:java对象和json对象之间的互相转换
- java中Json,Map,实体之间的转换
- java关于对象(javabean)与xml之间的相互转换
- java对象转换map
- java 使用XStream Java对象和XML之间的转换
- java把实体对象转化成list和map
- AXIS2中OMElement和Java对象之间的转换
- 将 Shiro 作为应用的权限基础
- Java Jdbc
- 算法-旋转数组的最小数字
- 【C语言】函数调用过程解析(栈帧)
- HDU 1075 What Are You Talking About(字典树)
- Java关于实体对象和Map对象之间的转换
- linux下远程服务器登录命令
- java基础8
- sdut 保留整数
- 基于JS的AB测试方案
- at命令
- Python打包分发工具setuptools简介
- Intervals (差分约束)
- How Many Tables(HDU