共計 1556 個字符,預計需要花費 4 分鐘才能閱讀完成。
Java 中將 Object 轉換為 Map 的方法有以下幾種:
- 使用 Java 反射機制:利用 Java 反射機制獲取 Object 的所有字段,然后將字段名作為 key,字段值作為 value,存儲到 Map 中。
public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {Map<String, Object> map = new HashMap<>();
Class<?> clazz = obj.getClass();
for (Field field : clazz.getDeclaredFields()) {field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
return map;
}
- 使用 JavaBean 的 get 方法:通過 JavaBean 的 get 方法獲取 Object 的屬性值,然后將屬性名作為 key,屬性值作為 value,存儲到 Map 中。
public static Map<String, Object> objectToMap(Object obj) throws IntrospectionException, IllegalAccessException, InvocationTargetException {Map<String, Object> map = new HashMap<>();
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {String key = propertyDescriptor.getName();
if (!key.equals("class")) {Method getter = propertyDescriptor.getReadMethod();
Object value = getter.invoke(obj);
map.put(key, value);
}
}
return map;
}
- 使用第三方庫,如 Apache Commons BeanUtils 或 Spring 的 BeanUtils。這些庫提供了更簡便的方法來將 Object 轉換為 Map。
使用 Apache Commons BeanUtils:
import org.apache.commons.beanutils.BeanUtils;
public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {Map<String, Object> map = new HashMap<>();
map = BeanUtils.describe(obj);
map.remove("class");
return map;
}
使用 Spring 的 BeanUtils:
import org.springframework.beans.BeanUtils;
public static Map<String, Object> objectToMap(Object obj) {Map<String, Object> map = new HashMap<>();
BeanUtils.copyProperties(obj, map);
return map;
}
丸趣 TV 網 – 提供最優質的資源集合!
正文完