当前位置: 主页 > JAVA语言

java map转为实体类-java map转json

发布时间:2023-02-09 16:37   浏览次数:次   作者:佚名

Java中使用反射实现Map和JavaBean之间的转换

在日常工作中,有时我们可能会遇到以下几种情况。

例如:

(1)后端接受一个参数Map param(可能是前端表单维护的一个对象……)。

(2)在Map对象中存储一个对象的各个属性(key)和对应的值(value)。

(3).......

针对以上情况:

1.对象属性少的时候操作起来比较方便,可以通过手动写的方式解决。

2.如果属性太多(几十个甚至上百个字段),用到的地方很多,手动写会有点麻烦。

这里推荐给你一个方法:

使用反射在 Map 和 JavaBean 之间进行转换

案件:

(1) 下面是一个比较常见的JavaBean。

以Student为例,属性、构造函数、set/get、toString……

java map转json_jsonobject转map java_java map转为实体类

(2)工具类MapAndJavaBeanUtil

方法:将 Map 转换为 JavaBean

主要是利用了java反射的机制(本文不针对反射)。

字段类:封装了对象的属性信息。

//获取对象的属性字段数组

字段 [] 字段 = obj。 得到类()。 getDeclaredFields();

//设置对象属性名属性值

field.set(obj, map.get(field.getName()));

jsonobject转map java_java map转为实体类_java map转json

(3)方法:对象转Map

与(2)相同。

java map转json_jsonobject转map java_java map转为实体类

(4) 测试

java map转为实体类_jsonobject转map java_java map转json

如果大家还有其他方法,欢迎大家留言java map转为实体类,共同进步。 感谢您的支持。

源码贴在下面,也可以私信。

MapAndJavaBeanUtil 工具类

包实用程序;

导入 java.lang.reflect.Field;

导入 java.lang.reflect.Modifier;

导入 java.util.HashMap;

导入 java.util.Map;

公共类 MapAndJavaBeanUtil {

/**

* 将地图转换为 JavaBean

* @param 地图

* @param 克拉兹

* @返回

*/

public static Object mapToObject(Map map, Class clazz) {

如果(地图==空)返回空;

对象 obj = null;

尝试 {

obj = 克拉兹。 新实例();

字段 [] 字段 = obj。 得到类()。 getDeclaredFields();

对于(字段字段:字段){

int mod =字段。 getModifiers();

如果 (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {

继续;

}

field.setAccessible(true);

//设置对象的属性名属性值

field.set(obj, map.get(field.getName()));

}

} 赶上(异常 e){

e.printStackTrace();

}

返回对象;

}

/**

* 将对象转换为地图

* @param 对象

* @返回

*/

public static Map ObjectToMap(Object obj) {

如果(obj == null)返回null;

映射 map = new HashMap();

类 clazz = obj。 得到类();

字段 [] 字段 = clazz。 getDeclaredFields();

尝试 {

对于(字段字段:字段){

// 打破封装(私有)

field.setAccessible(true);

// 属性名属性值

map.put(field.getName(), field.get(obj));

}

} 赶上(异常 e){

e.printStackTrace();

}

返回地图;

}

}

学生实体类

包实体;

导入java.util.Date;

公开课学生{

私有字符串 pkid;

私有整数 sno;

私有字符串名称;

私人约会日期;

公共学生(){}

public Student(String pkid, Integer sno, String sname, Date date) {

极好的();

这个.pkid = pkid;

这个.sno = sno;

this.sname = sname;

this.date = 日期;

}

公共字符串 getPkid() {

返回 pkid;

}

public void setPkid(String pkid) {

这个.pkid = pkid;

}

公共整数 getSno() {

返回斯诺;

}

public void setSno(整数 sno) {

这个.sno = sno;

}

公共字符串 getSname() {

返回名字;

}

public void setSname(String sname) {

this.sname = sname;

}

公共日期 getDate() {

归期;

}

公共无效设置日期(日期日期){

this.date = 日期;

}

@覆盖

公共字符串 toString() {

返回“学生 [pkid=" + pkid + ", sno=" + sno + ", sname=" + sname + ", date=" + date + "]";

}

}

演示测试类

包装测试;

导入java.util.Date;

导入 java.util.Map;

进口实体。 学生;

导入 util.MapAndJavaBeanUtil;

公开课 Demo1 {

public static void main(String[] args) {

学生 stu = new Student();

stu.setPkid("274DA9A4C02D4654870FF5311E5154FF");

stu.setSname("奥德赛");

stu.setSno(新整数(20144550));

stu.setDate(新日期());

//学生-->地图

映射结果 = MapAndJavaBeanUtil。 ObjectToMap(stu);

System.out.println("学生 --> 地图: "+result);

//地图——>学生

对象 obj = MapAndJavaBeanUtil. mapToObject(结果java map转为实体类,Student.class);

学生 stuResult = (Student) obj;

System.out.println("地图 --> 学生: "+stuResult.toString());

}

}