日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Object 轉(zhuǎn)Map,Map轉(zhuǎn)Object方式總結(jié)

作者:在奮斗的大道 更新時(shí)間: 2022-04-09 編程語(yǔ)言

商品業(yè)務(wù)對(duì)象定義:Product

Product product = new Product();
product.setId(1L);
product.setName("商品名")
product.setProductDt("2022-03-16")

第一種:通過(guò)Alibaba Fastjson實(shí)現(xiàn):

pom.xml 文件依賴


    com.alibaba
    fastjson
    1.2.66
//Object轉(zhuǎn)Map
Map map = JSONObject.parseObject(JSONObject.toJSONString(product), Map.class);
Map map = JSONObject.parseObject(JSON.toJSONString(product));
//Map轉(zhuǎn)Object
Product productDto1 = JSON.parseObject(JSON.toJSONString(map), Product.class);
Product productDto2 = JSONObject.toJavaObject(JSON.toJSONString(map), Product.class);

第二種:通過(guò)SpringBoot自帶 Jackso實(shí)現(xiàn)

一般情況下我們引入MVC,MVC里面幫我們引入了Jackso依賴

 
        
            org.springframework.boot
            spring-boot-starter-web
        

最終的依賴:

ObjectMapper mapper = new ObjectMapper();
//對(duì)象轉(zhuǎn)map
Map m = mapper.readValue(mapper.writeValueAsString(product), Map.class);
//map轉(zhuǎn)對(duì)象
Product dto = mapper.readValue(mapper.writeValueAsString(m), Product.class);

 第三種:通過(guò)Apache common Bean工具類實(shí)現(xiàn)

Pom.xml文件依賴


    commons-beanutils
    commons-beanutils
    1.9.3

#使用org.apache.commons.beanutils.BeanMap進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)Bean轉(zhuǎn)Map
Map map = new org.apache.commons.beanutils.BeanMap(product);

#使用org.apache.commons.beanutils.BeanUtils將map轉(zhuǎn)為對(duì)象
BeanUtils.populate(product, map);

 第四種: 通過(guò)反射實(shí)現(xiàn)

通過(guò)反射實(shí)現(xiàn)Bean 轉(zhuǎn)Map

//Object轉(zhuǎn)Map
public static Map getObjectToMap(Object obj) throws IllegalAccessException {
    Map map = new LinkedHashMap();
    Class clazz = obj.getClass();
    System.out.println(clazz);
    for (Field field : clazz.getDeclaredFields()) {
        field.setAccessible(true);
        String fieldName = field.getName();
        Object value = field.get(obj);
        if (value == null){
            value = "";
        }
        map.put(fieldName, value);
    }
    return map;
}

通過(guò)反射實(shí)現(xiàn)Map轉(zhuǎn)Bean

//Map轉(zhuǎn)Object
public static Object mapToObject(Map map, Class beanClass) throws Exception {
    if (map == null)
        return null;
    Object obj = beanClass.newInstance();
    Field[] fields = obj.getClass().getDeclaredFields();
    for (Field field : fields) {
        int mod = field.getModifiers();
        if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
            continue;
        }
        field.setAccessible(true);
        if (map.containsKey(field.getName())) {
            field.set(obj, map.get(field.getName()));
        }
    }
    return obj;
}


原文鏈接:https://blog.csdn.net/zhouzhiwengang/article/details/123522413

欄目分類
最近更新