Java中object转map的方法是什么

49次阅读
没有评论

共计 1556 个字符,预计需要花费 4 分钟才能阅读完成。

Java 中将 Object 转换为 Map 的方法有以下几种:

  1. 使用 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;
}
  1. 使用 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;
}
  1. 使用第三方库,如 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 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2024-01-29发表,共计1556字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)