目錄
1、使用 BeanUtils
2、ObjectMapper
3、Gson
4、Jackson
5、手動進行轉(zhuǎn)換
1、使用 BeanUtils
????????BeanUtils 是 Apache Commons BeanUtils 項目提供的一個常用的工具類庫,該工具類庫提供了一系列很有用的方法,包括將 Bean 轉(zhuǎn)換成 Map 對象、將 Map 對象轉(zhuǎn)換成 Bean 以及獲取 Bean 的屬性值等方法。
// 將 Map 轉(zhuǎn)換成對象
public static <T> T mapToBean(Map<String, Object> map, Class<T> beanClass) throws Exception {
T bean = beanClass.newInstance();
BeanUtils.populate(bean, map);
return bean;
}
// 將對象轉(zhuǎn)換成 Map
public static Map<String, Object> beanToMap(Object bean) throws Exception {
return BeanUtils.describe(bean);
}
2、ObjectMapper
????????ObjectMapper 是 Jackson 庫中提供的一個類,它可以將 Json 字符串轉(zhuǎn)換成 Java 對象,也可以將 Java 對象轉(zhuǎn)換成 Json 字符串。在將 Java 對象轉(zhuǎn)換成 Map 對象時也可以使用 ObjectMapper。
// 將 Map 轉(zhuǎn)換成對象
public static <T> T mapToBean(Map<?, ?> map, Class<T> beanClass) throws Exception {
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(map, beanClass);
}
// 將對象轉(zhuǎn)換成 Map
public static Map<String, Object> beanToMap(Object bean) throws Exception {
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(bean, Map.class);
}
3、Gson
????????Gson 是 Google 提供的一個 Java 庫,可以將 Java 對象轉(zhuǎn)換成 Json 字符串,也可以將 Json 字符串轉(zhuǎn)換成 Java 對象。在將 Java 對象轉(zhuǎn)換成 Map 對象時也可以使用 Gson。
// 將 Map 轉(zhuǎn)換成對象
public static <T> T mapToBean(Map<?, ?> map, Class<T> beanClass) {
Gson gson = new Gson();
String json = gson.toJson(map);
return gson.fromJson(json, beanClass);
}
// 將對象轉(zhuǎn)換成 Map
public static Map<String, Object> beanToMap(Object bean) {
Gson gson = new Gson();
String json = gson.toJson(bean);
return gson.fromJson(json, new TypeToken<Map<String, Object>>(){}.getType());
}
4、Jackson
????????Jackson 是另一個流行的 JSON 庫,可以將 Java 對象轉(zhuǎn)換成 Json 字符串,也可以將 Json 字符串轉(zhuǎn)換成 Java 對象。在將 Java 對象轉(zhuǎn)換成 Map 對象時也可以使用 Jackson。文章來源:http://www.zghlxwxcb.cn/news/detail-733347.html
// 將 Map 轉(zhuǎn)換成對象
public static <T> T mapToBean(Map<?, ?> map, Class<T> beanClass) throws Exception {
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(map);
return mapper.readValue(json, beanClass);
}
// 將對象轉(zhuǎn)換成 Map
public static Map<String, Object> beanToMap(Object bean) throws Exception {
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(bean);
return mapper.readValue(json, new TypeReference<Map<String, Object>>() {});
}
5、手動進行轉(zhuǎn)換
????????手動轉(zhuǎn)換的方式是最基本的一種轉(zhuǎn)換方式,通過獲取對象的屬性值,創(chuàng)建 Map 對象并把屬性存入 Map 對象中,或者從 Map 對象中獲取值,創(chuàng)建對象并把屬性值賦值給對象。手動轉(zhuǎn)換的方式需要自己進行拼接和處理數(shù)據(jù)類型轉(zhuǎn)換等工作,比較麻煩,但是靈活性比較高。文章來源地址http://www.zghlxwxcb.cn/news/detail-733347.html
/ 將 Map 轉(zhuǎn)換成對象
public static <T> T mapToBean(Map<?, ?> map, Class<T> beanClass) throws Exception {
T bean = beanClass.newInstance();
Field[] fields = beanClass.getDeclaredFields();
for (Field field: fields) {
field.setAccessible(true);
String fieldName = field.getName();
if (map.containsKey(fieldName)) {
Object value = map.get(fieldName);
field.set(bean, value);
}
}
return bean;
}
// 將對象轉(zhuǎn)換成 Map
public static Map<String, Object> beanToMap(Object bean) throws Exception {
Map<String, Object> map = new HashMap<>();
Field[] fields = bean.getClass().getDeclaredFields();
for (Field field: fields) {
field.setAccessible(true);
String fieldName = field.getName();
Object value = field.get(bean);
map.put(fieldName, value);
}
return map;
}
到了這里,關(guān)于java如何將對象轉(zhuǎn)換為map?如何將map轉(zhuǎn)換為對象?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!