
Java将对象转为Map,可以采用四种方法,只有最后一种是最方便的。
使用 Jackson
可以先将对象序列化为JSON字符串,然后再将该字符串反序列化为Map对象。
ObjectMapper mapper = new ObjectMapper();
User user = new User();
String jsonInString = mapper.writeValueAsString(user);
Map<?, ?> mapRepresentation = mapper.readValue(jsonInString, Map.class);
System.out.println(mapRepresentation);使用 Gson
与Jackson类似,Gson也可以用来将Java对象转换为Map。
Gson gson = new Gson();
User user = new User();
Type targetType = new TypeToken<Map<String, Object>>(){}.getType();
Map<String, Object> mapRepresentation = gson.fromJson(gson.toJson(user), targetType);
System.out.println(mapRepresentation);
使用 Guava
Guava 不直接支持对象到Map的转换。需要手动创建Map并填充数据。
User user = new User();
Map<String, Object> mapRepresentation = Maps.newHashMap();
for (Field field : user.getClass().getDeclaredFields()) {
field.setAccessible(true);
mapRepresentation.put(field.getName(), field.get(user));
}
System.out.println(mapReflection);使用 Hutool
Hutool有一个BeanUtil类可以直接将对象转换为`Map`。
User user = new User();
Map<String, Object> mapRepresentation = BeanUtil.beanToMap(user);
System.out.println(mapRepresentation);是不是觉得有Hutool方便多了?
