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面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》