共計 1308 個字符,預計需要花費 4 分鐘才能閱讀完成。
Java 實體對象轉 Map 的方法有以下幾種:
- 使用 Java 反射機制:通過使用 Java 的反射機制,可以獲取實體對象的所有字段和對應的值,然后將它們存儲在一個 Map 中。
public static Map objectToMap(T obj) {Map map = new HashMap();
Class clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {field.setAccessible(true);
try {map.put(field.getName(), field.get(obj));
} catch (IllegalAccessException e) {e.printStackTrace();
}
}
return map;
}
- 使用 Apache Commons BeanUtils 庫:Apache Commons BeanUtils 庫提供了一個工具類 BeanUtils,可以方便地將 Java 對象轉換為 Map。
首先,需要引入 Apache Commons BeanUtils 庫的依賴:
commons-beanutils
commons-beanutils
1.9.4
然后,使用 BeanUtils 的 describe 方法將實體對象轉換為一個 Map。
import org.apache.commons.beanutils.BeanUtils;
public static Map objectToMap(T obj) {
try {return BeanUtils.describe(obj);
} catch (Exception e) {e.printStackTrace();
return null;
}
}
需要注意的是,BeanUtils.describe 方法會將實體對象的屬性名作為 Map 的 key,對應屬性值作為 Map 的 value,但屬性值的類型可能會被轉換為 String。
- 使用 Jackson 庫:如果實體對象已經被序列化為 JSON 字符串,可以使用 Jackson 庫將 JSON 字符串轉換為 Map。
首先,需要引入 Jackson 庫的依賴:
com.fasterxml.jackson.core
jackson-core
2.12.3
com.fasterxml.jackson.core
jackson-databind
2.12.3
然后,使用 Jackson 的 ObjectMapper 類將 JSON 字符串轉換為 Map。
import com.fasterxml.jackson.databind.ObjectMapper;
public static Map jsonToMap(String json) {ObjectMapper mapper = new ObjectMapper();
try {return mapper.readValue(json, new TypeReference<Map>() {});
} catch (Exception e) {e.printStackTrace();
return null;
}
}
需要注意的是,這種方法要求實體對象已經被序列化為 JSON 字符串,否則無法完成轉換。
丸趣 TV 網 – 提供最優質的資源集合!
正文完