国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

常用的map轉(zhuǎn)bean互轉(zhuǎn)方法

這篇具有很好參考價值的文章主要介紹了常用的map轉(zhuǎn)bean互轉(zhuǎn)方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

一、hutool工具類

這個很常用,還支持將蛇形轉(zhuǎn)成駝,如:apply_time 會賦值到applyTime上


        LTDemo ltDemo = BeanUtil.mapToBean(map, LTDemo.class, true, CopyOptions.create());
        Map<String, Object> demoMap = BeanUtil.beanToMap(ltDemo);
        
        System.out.println("輸出map -> bean: " + ltDemo.toString());
        System.out.println("輸出bean -> map : " + demoMap);
        System.out.println(ltDemo.getApplyTime());
        System.out.println(ltDemo.getChildren());
        ltDemo.getChildren().forEach(children -> System.out.println(children.toString()));
        ltDemo.getChildren().forEach(children -> System.out.println(children.getAddress()));

輸出原生map: {address=上海市, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 17:21:01 CST 2023, age=2}], name=張三, apply_time=Fri Mar 03 17:21:01 CST 2023, age=20}
輸出map -> bean: LTDemo(name=張三, age=20, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[LTDemo(name=小張, age=2, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[])])
輸出bean -> map : {name=張三, age=20, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[LTDemo(name=小張, age=2, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[])]}
Fri Mar 03 17:21:01 CST 2023
[LTDemo(name=小張, age=2, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[])]
LTDemo(name=小張, age=2, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[])
上海市


二、fastjson工具類

這個也很常用,也支持將蛇型轉(zhuǎn)成駝峰,
如:apply_time 會賦值到applyTime


        LTDemo ltDemo = JSONObject.parseObject(JSONObject.toJSONString(map), LTDemo.class);
        Map demoMap = JSONObject.parseObject(JSONObject.toJSONString(ltDemo), Map.class);
        
        System.out.println("輸出map -> bean: " + ltDemo.toString());
        System.out.println("輸出bean -> map : " + demoMap);
        System.out.println(ltDemo.getApplyTime());
        System.out.println(ltDemo.getChildren());
        ltDemo.getChildren().forEach(children -> System.out.println(children.toString()));
        ltDemo.getChildren().forEach(children -> System.out.println(children.getAddress()));


輸出原生map: {address=上海市, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 17:21:59 CST 2023, age=2}], name=張三, apply_time=Fri Mar 03 17:21:59 CST 2023, age=20}
輸出map -> bean: LTDemo(name=張三, age=20, address=上海市, applyTime=Fri Mar 03 17:21:59 CST 2023, children=[LTDemo(name=小張, age=2, address=上海市, applyTime=Fri Mar 03 17:21:59 CST 2023, children=[])])
輸出bean -> map : {address=上海市, children=[{"address":"上海市","children":[],"name":"小張","applyTime":1677835319813,"age":2}], name=張三, applyTime=1677835319813, age=20}
Fri Mar 03 17:21:59 CST 2023
[LTDemo(name=小張, age=2, address=上海市, applyTime=Fri Mar 03 17:21:59 CST 2023, children=[])]
LTDemo(name=小張, age=2, address=上海市, applyTime=Fri Mar 03 17:21:59 CST 2023, children=[])
上海市


三、beanutils_BeanUtils工具類 不太好用

嵌套型map,轉(zhuǎn)換會有問題,且不支持蛇型轉(zhuǎn)成駝峰

    //-------------------    beanutils_BeanUtils  -----------------
    //map轉(zhuǎn)java對象
    public static <T> T beanUtils_mapToObject(Map<String, Object> map, Class<T> clazz) throws Exception {
        if (map == null) {
            return null;
        }
        T bean = clazz.newInstance();
        BeanUtils.populate(bean, map);
        return bean;
    }
        LTDemo ltDemo = beanUtils_mapToObject(map, LTDemo.class);
        System.out.println("輸出map -> bean: " + ltDemo.toString());
        System.out.println(ltDemo.getApplyTime());
        System.out.println(ltDemo.getChildren().get(0).getApplyTime());
輸出map -> bean: LTDemo(name=張三, age=20, address=上海市, applyTime=Fri Mar 03 17:04:38 CST 2023, children=[{address=上海市, name=小張, applyTime=Fri Mar 03 17:04:38 CST 2023, age=2}])
Fri Mar 03 17:04:38 CST 2023
Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemo
	at com.example.demo.map2bean.MapToBean.main(MapToBean.java:73)

四、cglib BeanMap工具類 不太好用

這個也很常用,也支持將蛇形轉(zhuǎn)成駝,如:apply_time 會賦值到applyTime上

import net.sf.cglib.beans.BeanMap;

    // -------------------   cglib BeanMap  -------------------
    //map對象轉(zhuǎn)java
    public static <T> T BeanMapMapToObject(Map<String, Object> map, Class<T> beanClass) throws Exception {
        T object = beanClass.newInstance();
        BeanMap beanMap = BeanMap.create(object);
        beanMap.putAll(map);
        return object;
    }

    //java對象轉(zhuǎn)map
    public static Map<String, Object> BeanMapObjectToMap(Object obj) {
        Map<String, Object> map = Maps.newHashMap();
        if (obj != null) {
            BeanMap beanMap = BeanMap.create(obj);
            for (Object key : beanMap.keySet()) {
                map.put(key + "", beanMap.get(key));
            }
        }
        return map;
    }


        LTDemo ltDemo = beanMapMapToObject(map, LTDemo.class);
        Map demoMap = beanMapObjectToMap(ltDemo);
        System.out.println("輸出map -> bean: " + ltDemo.toString());
        System.out.println("輸出bean -> map : " + demoMap);
        System.out.println(ltDemo.getApplyTime());
        System.out.println(ltDemo.getChildren());
        ltDemo.getChildren().forEach(children -> System.out.println(children.toString()));

輸出原生map: {address=上海市, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 17:12:45 CST 2023, age=2}], name=張三, apply_time=Fri Mar 03 17:12:45 CST 2023, age=20}
輸出map -> bean: LTDemo(name=張三, age=20, address=上海市, applyTime=null, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 17:12:45 CST 2023, age=2}])
輸出bean -> map : {address=上海市, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 17:12:45 CST 2023, age=2}], name=張三, applyTime=null, age=20}
null
[{address=上海市, name=小張, apply_time=Fri Mar 03 17:12:45 CST 2023, age=2}]
Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemo
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at com.example.demo.map2bean.MapToBean.main(MapToBean.java:75)

五、reflect 反射來玩 不太好玩

    //-------------------   reflect     -------------------
    //map轉(zhuǎn)java對象
    public static Object reflectMapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
        if (map == null) {
            return null;
        }
        Object object = beanClass.newInstance();
        Field[] fields = beanClass.getDeclaredFields();
        for (Field field : fields) {
            int mod = field.getModifiers();
            if (Modifier.isFinal(mod) || Modifier.isStatic(mod)) {
                continue;
            }
            field.setAccessible(true);
            field.set(object, map.get(field.getName()));
        }
        return object;
    }

    //java對象轉(zhuǎn)map
    public static Map<String, Object> reflectObjectToMap(Object obj) throws Exception {
        if (obj == null) {
            return null;
        }
        Map<String, Object> map = new HashMap<String, Object>();
        Field[] declaredFields = obj.getClass().getDeclaredFields();
        for (Field field : declaredFields) {
            field.setAccessible(true);
            map.put(field.getName(), field.get(obj));
        }
        return map;
    }
        LTDemo ltDemo = reflectMapToObject(map,LTDemo.class);
        Map demoMap = reflectObjectToMap(ltDemo);
        System.out.println("輸出map -> bean: " + ltDemo.toString());
        System.out.println("輸出bean -> map : " + demoMap);
        System.out.println(ltDemo.getApplyTime());
        System.out.println(ltDemo.getChildren());
        ltDemo.getChildren().forEach(children -> System.out.println(children.toString()));
輸出原生map: {address=上海市, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 17:16:35 CST 2023, age=2}], name=張三, apply_time=Fri Mar 03 17:16:35 CST 2023, age=20}
輸出map -> bean: LTDemo(name=張三, age=20, address=上海市, applyTime=null, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 17:16:35 CST 2023, age=2}])
輸出bean -> map : {address=上海市, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 17:16:35 CST 2023, age=2}], name=張三, applyTime=null, age=20}
null
[{address=上海市, name=小張, apply_time=Fri Mar 03 17:16:35 CST 2023, age=2}]
Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemo
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at com.example.demo.map2bean.MapToBean.main(MapToBean.java:84)

六、Introspector類 不太好用

這個用起來,只能轉(zhuǎn)換第一層,而且不支持蛇型轉(zhuǎn)駝峰


import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

 //----------------- Introspector    ------------------

    //map轉(zhuǎn)java對象
    public static <T> T introspector_mapToObject(Map<String, Object> map, Class<T> clazz) throws Exception {
        if (map == null) {
            return null;
        }
        T bean = clazz.newInstance();
        BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());
        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor property : propertyDescriptors) {
            Method setter = property.getWriteMethod();
            if (setter != null) {
                setter.invoke(bean, map.get(property.getName()));
            }
        }
        return bean;
    }

    //java對象轉(zhuǎn)map
    public static Map<String, Object> introspector_objectToMap(Object obj) throws Exception {
        if (obj == null) {
            return null;
        }
        Map<String, Object> map = new HashMap<String, Object>();
        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
        PropertyDescriptor[] propertyDescriptors = beanInfo
                .getPropertyDescriptors();
        for (PropertyDescriptor property : propertyDescriptors) {
            String key = property.getName();
            if (key.compareToIgnoreCase("class") == 0) {
                continue;
            }
            Method getter = property.getReadMethod();
            Object value = getter != null ? getter.invoke(obj) : null;
            map.put(key, value);
        }
        return map;
    }
        LTDemo ltDemo = introspector_mapToObject(map, LTDemo.class);
        Map demoMap = introspector_objectToMap(ltDemo);
        System.out.println("輸出map -> bean: " + ltDemo.toString());
        System.out.println("輸出bean -> map : " + demoMap);

        System.out.println(ltDemo.getApplyTime());

        System.out.println(ltDemo.getChildren());

        System.out.println(ltDemo.getChildren().get(0).toString());

輸出原生map: {address=上海市, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 16:56:37 CST 2023, age=2}], name=張三, apply_time=Fri Mar 03 16:56:37 CST 2023, age=20}
輸出map -> bean: LTDemo(name=張三, age=20, address=上海市, applyTime=null, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 16:56:37 CST 2023, age=2}])
輸出bean -> map : {address=上海市, children=[{address=上海市, name=小張, apply_time=Fri Mar 03 16:56:37 CST 2023, age=2}], name=張三, applyTime=null, age=20}
null
[{address=上海市, name=小張, apply_time=Fri Mar 03 16:56:37 CST 2023, age=2}]
Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemo
	at com.example.demo.map2bean.MapToBean.main(MapToBean.java:65)

總結(jié)

不想說啥…看著用吧文章來源地址http://www.zghlxwxcb.cn/news/detail-600962.html

到了這里,關于常用的map轉(zhuǎn)bean互轉(zhuǎn)方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Java-json相關轉(zhuǎn)換,JSONObject與實體類/map互轉(zhuǎn)、List/List<map>和JSONArray互轉(zhuǎn)、獲取JSONObject中的key value、字符串String轉(zhuǎn)換等

    博客背景是Java開發(fā)。json相關的轉(zhuǎn)換、取值等在日常開發(fā)中經(jīng)常使用,但有時候還是會忘記or遇到些奇奇怪怪的問題。以此記錄,提醒自己~不定期更新~ 實體類和JSONObject互轉(zhuǎn) Map和JSONObject互轉(zhuǎn) String轉(zhuǎn)JSONObject 實體類轉(zhuǎn)JSON字符串時不過濾NULL空值 獲取JSONObject中的key value List和

    2024年02月12日
    瀏覽(29)
  • 進階JAVA篇- Map 系列集合的遍歷方法與常用API

    進階JAVA篇- Map 系列集合的遍歷方法與常用API

    目錄 ? ? ? ? 1.0 Map 集合的說明 ? ? ? ? 1.1 Map 集合的常用方法 ? ? ? ? 1.2?Map 系列集合的特點 ? ? ? ? 2.0?Map 系列集合的遍歷方法(三種方法) ???????? 2.1 使用 keySet() 方法遍歷 ????????2.2 使用 entrySet() 方法遍歷 ????????2.3 使用 forEach() 方法遍歷(Java 8+) ?

    2024年02月08日
    瀏覽(29)
  • JSON轉(zhuǎn)換:實體類和JSONObject互轉(zhuǎn),List和JSONArray互轉(zhuǎn),map和JSONObject,JSONarray互轉(zhuǎn)(fastjson版)

    1.實體類和JSONObject互轉(zhuǎn) 2.List和JSONArray互轉(zhuǎn) 3.Map和JSONObject互轉(zhuǎn)(同1.) 4.ListMap和JSONArray互轉(zhuǎn)(同2.) 5.取數(shù)據(jù) 6.JSONArray轉(zhuǎn)String{} 7.數(shù)組轉(zhuǎn)jsonarry 注: 由上示例可知任意數(shù)據(jù)類型均可通過JSON.toJSON(xxx)轉(zhuǎn)換成對應的JSONObject或JSONArray

    2024年01月19日
    瀏覽(24)
  • List<Entity>與Map<String, Entity>互轉(zhuǎn)

    List 轉(zhuǎn)為 MapString, Entity 要將 ListEntity 轉(zhuǎn)換為 MapString, Entity,你需要指定一個屬性作為 Map 的鍵,然后將 List 中的每個實體對象的該屬性值作為鍵,實體對象本身作為值放入 Map 中。以下是一個示例代碼: 假設你有一個名為 Entity 的實體類,其中有一個屬性名為 id ,你想將 Lis

    2024年04月22日
    瀏覽(23)
  • nlohmann json:實現(xiàn)map和struct的互轉(zhuǎn)

    可以借助json實現(xiàn)map和struct的互轉(zhuǎn):

    2024年02月11日
    瀏覽(27)
  • Hive之Map常用方法

    實際工作中,有時會出現(xiàn)map復雜數(shù)據(jù)類型,字段field1形式如:{‘k0’:‘a(chǎn)bc’,‘k1’:‘01,02,03’,‘k2’:‘456’},如果是string形式,我們可以適用get_json_object 函數(shù),取出對應的value值,具體如:get_json_object(field,‘$.k0’),即可取出值abc,如果是map數(shù)據(jù)類型,這個值該怎么取呢

    2023年04月24日
    瀏覽(10)
  • Java Base64字符串與String字符串互轉(zhuǎn)方法

    Java Base64字符串與String字符串互轉(zhuǎn)方法

    在使用String轉(zhuǎn)Base64和Base64轉(zhuǎn)String上有點小問題,特此記錄。 結(jié)果: 也是跟上面差不多的思路,將Base64轉(zhuǎn)為byte數(shù)組,再轉(zhuǎn)為String

    2024年02月15日
    瀏覽(32)
  • JavaScript -- Map對象及常用方法介紹

    JavaScript -- Map對象及常用方法介紹

    Map用來存儲鍵值對結(jié)構(gòu)的數(shù)據(jù)**(key-value)** Object中存儲的數(shù)據(jù)就可以認為是一種 鍵值對結(jié)構(gòu) Map和Object的主要區(qū)別: Object中的屬性名只能是 字符串或符號 ,如果傳遞了一個其他類型的屬性名,JS解釋器會自動將其 轉(zhuǎn)換為字符串 Map中任何類型的值都可以成為數(shù)據(jù)的key map.si

    2024年02月10日
    瀏覽(21)
  • Flutter中Map、List數(shù)組的常用方法

    Dart語言是Flutter開發(fā)的必備語言,官方地址如下:Dart:https://dart.cn/ 使用dart工具來運行這些常用的方法,工具:https://dartpad.cn 在Dart中,Map用來存儲對像類型的數(shù)據(jù),List與Set用來存儲數(shù)組類型的數(shù)據(jù)。 Map的創(chuàng)建實例如下: 創(chuàng)建有一個有初始值的Map,代碼如下: 根據(jù)List數(shù)據(jù)來

    2024年02月08日
    瀏覽(26)
  • JavaScript 之 常用迭代方法forEach、filter()、map()、reduce()

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce()

    代碼如下: 如下: 代碼簡潔很多,如下: 簡介 : filter() 方法創(chuàng)建給定數(shù)組一部分的淺拷貝,其包含通過所提供函數(shù)實現(xiàn)的測試的所有元素。 語法 : 參數(shù)、返回值 描述 參考官網(wǎng): 官網(wǎng)——Array.prototype.filter(). 代碼如下: 代碼如下: 下例使用 filter() 根據(jù)搜索條件來過濾數(shù)

    2024年02月09日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包