BeanUtils 实现 Map 与 Bean 进行相互转换

基本使用

Map -> Bean

BeanUtils.populate(Object bean, Map<String, ? extends Object> properties);

Bean -> Map

BeanMap testMap = new BeanMap(Object bean);

需要添加的 Maven 依赖

<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version>
</dependency>

案例

public class MapBeanConvert {

    public static void main(String[] args) throws Exception {
        User user = new User();
        Map<String, Object> map = new HashMap<>();
        map.put("name", "Joe.Ye");
        map.put("home", "http://www.appblog.cn");
        map.put("city", "HZ");
        map.put("age", 25);
        BeanUtils.populate(user, map);
        System.out.println(JSON.toJSONString(user));

        BeanMap beanMap = new BeanMap(user);
        System.out.println(JSON.toJSONString(beanMap));
    }

    public static class User {
        String name;
        String home;
        int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getHome() {
            return home;
        }

        public void setHome(String home) {
            this.home = home;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}
{"age":25,"home":"http://www.appblog.cn","name":"Joe.Ye"}
{"name":"Joe.Ye","class":"com.lianlian.global.pay.test.MapBeanConvert$User","age":25,"home":"http://www.appblog.cn"}

功能封装

bean 转换成 map

private Map<String, String> bean2Map(Object object) {
    Map<String, String> map = null;
    try {
        map = BeanUtils.describe(object);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return map;
}

private BeanMap bean2Map(Object object) {
    return new BeanMap(object);
}

map 转换成 bean

private static <T> T map2Bean(Map<String, String> map, Class<T> clazz) {
    T bean = null;
    try {
        bean = clazz.newInstance();
        BeanUtils.populate(bean, map);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return bean;
}
上一篇 关于Java中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码详解
下一篇 Java模拟Form表单提交
目录
文章列表
1 Glide 4.x生成GlideApp
Glide 4.x生成GlideApp
2
Android 10(Api 29)新特性适配 - 后台应用增加定位限制
Android 10(Api 29)新特性适配 - 后台应用增加定位限制
3
Flutter中StatefulWidget控件状态管理的两种方式
Flutter中StatefulWidget控件状态管理的两种方式
4
微信支付JSSDK接入方式
微信支付JSSDK接入方式
5
Vue.js下载二进制流文件并转为Excel文件
Vue.js下载二进制流文件并转为Excel文件
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。