java 實體類Bean與Map互相轉化


1.情景展示

  java對象與Map之間進行相互轉換,如何實現?   

2.分析

  通過org.apache.commons.beanutils.BeanUtils類來實現

  所需jar包

<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.8.0</version>
    <scope>compile</scope>
</dependency>  

3.代碼實現

  Java對象轉Map

/*
 * Java對象轉Map
 * @attention: 實體類的屬性必須有對應的get()方法
 * @date: 2020年11月20日 0020 10:43
 * @param: bean Java對象
 * @return: java.util.Map<java.lang.String,java.lang.Object>
 */
public static Map<String, Object> fromJavaBean(Object bean) {
    if (null == bean) return null;

    try {
        Map<String, Object> map = BeanUtils.describe(bean);
        // 移除key=class
        map.remove("class");
        log.debug("JavaBean-->Map轉換前:" + bean.toString());
        log.debug("JavaBean-->Map轉換后:" + map);
        return map;
    } catch (Exception e) {
        log.error("JavaBean-->Map轉換失敗:" + e.getMessage());
        e.printStackTrace();
        return null;
    }
}

  說明: 首字母大寫有可能會存在被強轉成小寫的可能,比如:X509->x509

  Map轉Java對象

/*
 * Map轉java對象
 * @attention: 實體類不能使用lombok注解@Accessors(chain = true),否則將會賦值失敗
 *  實體類的屬性必須有對應的set()方法
 * @date: 2020年11月20日 0020 10:53
 * @param: clazz    java類
 * @param: map  待轉換
 * @return: T
 */
public static <T> T toJavaBean(Class<?> clazz, Map map) {
    try {
        T newBeanInstance = (T) clazz.newInstance();
        BeanUtils.populate(newBeanInstance, map);
        log.debug("Map-->JavaBean轉換前:" + map);
        log.debug("Map-->JavaBean轉換后:" + newBeanInstance.toString());
        return newBeanInstance;
    } catch (Exception e) {
        log.error("Map-->JavaBean轉換失敗:" + e.getMessage());
        e.printStackTrace();
        return null;
    }
}

4.測試    

public static void main(String[] args) {
    Map<String, Object> hashMap = new HashMap<>(5);
    hashMap.put("name", "Marydon");
    hashMap.put("sex", "男");
    hashMap.put("age", 18);
    hashMap.put("address", "深圳");
    hashMap.put("company", "創業");

    // map轉實體類
    People people = MapUtils.toJavaBean(People.class,hashMap);

    // 實體類轉map
    Map map = MapUtils.fromJavaBean(people);

    // 打印執行結果
    System.out.println(people.toString());
    System.out.println(map);
}

 

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM