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

學無先后,達者為師

網站首頁 編程語言 正文

Object 轉Map,Map轉Object方式總結

作者:在奮斗的大道 更新時間: 2022-04-09 編程語言

商品業務對象定義:Product

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

第一種:通過Alibaba Fastjson實現:

pom.xml 文件依賴


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

第二種:通過SpringBoot自帶 Jackso實現

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

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

最終的依賴:

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

 第三種:通過Apache common Bean工具類實現

Pom.xml文件依賴


    commons-beanutils
    commons-beanutils
    1.9.3

#使用org.apache.commons.beanutils.BeanMap進行轉換,實現Bean轉Map
Map map = new org.apache.commons.beanutils.BeanMap(product);

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

 第四種: 通過反射實現

通過反射實現Bean 轉Map

//Object轉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;
}

通過反射實現Map轉Bean

//Map轉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

欄目分類
最近更新