欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

map转成对象

程序员文章站 2022-06-15 09:50:22
...

map集合转对象

经常遇到map集合转化成对象的问题,于是利用反射写了这个。

建一个实体类

import lombok.Data;
import java.util.Date;

@Data
public class Userinfos {
	private int userid;
	private String username;
}

工具类

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Map;
import java.util.Objects;

/**
 * map集合转对象工具
 *
 */
public class MapToObj {
    /**
     * @param map
     * @param clazz
     * @return
     */
    public static Object mapToObject(Map<String, Object> map, Class<?> clazz) {
        if (map == null) {
            return null;
        }
        Object ob = null;
        try {
            ob = clazz.newInstance();
            Field[] fis = ob.getClass().getDeclaredFields();
            for (Field fi : fis) {
                int mod = fi.getModifiers();
                if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
                    continue;
                }
                fi.setAccessible(true);
                if (Objects.equals("entranceId", fi.getName())) {
                    String str = String.valueOf(map.get(fi.getName()));
                    fi.set(ob, Long.parseLong(str));
                } else {
                    fi.set(ob, map.get(fi.getName()));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ob;
    }
}

测试

    public static void main(String[] args) 
        Map<String, Object> map = new HashMap<>();
        map.put("userid", 1);
        map.put("username", "xiaohong");
        Userinfos o = (Userinfos) MapToObj.mapToObject(map, Userinfos.class);
        System.out.println("o = " + o);
    }

结果


o = Userinfos(userid=1, username=xiaohong)

由此可见,直接转化成对象。