Java对象转Map详解(3种常用方式)

Java对象转Map详解(3种常用方式)-mikechen

Java对象转Map在Java开发中经常使用到,下面详解常用的3种Java对象转Map方法@mikechen

1. 利用FastJson 把对象转换为Map

fastjson 是阿里巴巴开发的一个开源的 JSON 库,可以通过fastjson把对象转换为Map。

使用fastjson ,需要加入fastjson的依赖,如下所示:

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>

加入fastjson后,代码示例如下:

 User user = new User();
 user.setName("mikechen");

/*对象转map*/
 String jsonString = JSON.toJSONString(user);
 Map map = JSON.parseObject(jsonString1, Map.class);

通过使用FastJson的ParseObject 方法,可以把Java对象转化为Map,这种方式推荐使用。

 

2.使用Java的反射把对象转换为Map

将Java对象转换为Map,也可以使用Java的反射机制来实现。

如下所示:

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public class ObjectToMapExample {

    public static void main(String[] args) {
        // 创建一个Person对象
        Person person = new Person("Tom", 20);

        // 将Person对象转换为Map
        Map<String, Object> map = objectToMap(person);

        // 输出转换后的Map
        System.out.println(map);
    }

    public static Map<String, Object> objectToMap(Object obj) {
        Map<String, Object> map = new HashMap<>();

        // 获取obj类中的所有字段
        Field[] fields = obj.getClass().getDeclaredFields();

        // 遍历所有字段,将字段名和字段值存入map中
        for (Field field : fields) {
            try {
                // 设置字段可访问,否则会抛出IllegalAccessException异常
                field.setAccessible(true);
                // 将字段名和字段值存入map中
                map.put(field.getName(), field.get(obj));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return map;
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

通过objectToMap方法将其转换为一个Map对象,objectToMap方法通过Java反射机制获取Person对象的所有字段,并存入一个Map对象中。

 

3.beanutils把对象转换为Map

beanutils是Apache开源组织提供的用于操作JAVABEAN的工具包,通过beanutils也可以把对象转换为Map。

使用beanutils,需要加入beanutils的依赖,如下所示:

<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
      <version>1.9.1</version>
</dependency>s

加入beanutils后,代码示例如下:

User user = new User();
Map<String, Object> map = new HashMap();
map.put("name", "mikechen");

//java转map
BeanMap map = new BeanMap(user);

//map转java对象
 BeanUtils.populate(user, map);

以上就是3种常见的Java对象转Map的方式,更多Java集合,请查看:Java集合(万字图文全面详解)

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法