json、map、对象之间相互转换
admin
2024-02-13 20:14:04
0
/*** 功能描述: 
* 将json转换成DTO对象** @param jsonStr {}* @return dto* @see [相关类/方法](可选)* @since [产品/模块版本](可选)*/ public static T json2DTO(String jsonStr, Class tClass) {Gson gson = new Gson();try {return gson.fromJson(jsonStr, tClass);} catch (Exception e) {log.error("【对象转换】错误, json=" + jsonStr, e);throw new RuntimeException(McmpErrorEnum.CONVERTER_ERROR);} }

/*** 功能描述: 
* 将Map转换成DTO对象** @param params {}* @return dto* @see [相关类/方法](可选)* @since [产品/模块版本](可选)*/ public static T map2DTO(Map params, Class tClass) {if (params == null) {return null;}try {String jsonStr = toJson(params);return json2DTO(jsonStr, tClass);} catch (Exception e) {log.error("【对象转换】错误, map=" + params, e);throw new McmpComException(McmpErrorEnum.CONVERTER_ERROR);} }public static String toJson(Object obj) {Gson gson = new Gson();return gson.toJson(obj); }

/*** 功能描述: 
* 将List的map对象转换成List的DTO对象** @param listMap list* @param tClass 要转成的DTO对象* @return List* @see [相关类/方法](可选)* @since [产品/模块版本](可选)*/ public static List listMap2ListDTO(List listMap, Class tClass) {if (listMap == null) {return null;}Gson gson = new Gson();try {String json = gson.toJson(listMap);return json2ListDTO(json, tClass);} catch (Exception e) {log.error("【对象转换】错误, listMap=" + listMap, e);throw new McmpComException(McmpErrorEnum.CONVERTER_ERROR);} }public static List json2ListDTO(String json, Class tClass) {Gson gson = new Gson();Type type = com.google.gson.internal.$Gson$Types.newParameterizedTypeWithOwner(null, ArrayList.class, tClass);return gson.fromJson(json, type); }

/**
 * json字符串转换成map

 * Eliminate JSONObject, JSONArray
 *
 * @param jsonString
 * @author 20020637
 * @return HashMap
 * */
public static HashMap json2HashMap(String jsonString) {
    if (StringUtils.isEmpty(jsonString)) {
        return new HashMap<>();
    }
    HashMap jsonMap = JSON.parseObject(jsonString, HashMap.class);
    if (MapUtils.isEmpty(jsonMap)) {
        return new HashMap<>();
    }
    HashMap resultMap = new HashMap();
    for (Map.Entry entry : jsonMap.entrySet()) {
        String key = entry.getKey();
        Object value = entry.getValue();
        if (value instanceof JSONArray) {
            JSONArray jsonArray = (JSONArray) value;
            List list = handleJSONArray(jsonArray);
            resultMap.put(key, list);
        } else {
            resultMap.put(key, value);
        }
    }
    return resultMap;
}

private static List handleJSONArray(JSONArray jsonArray) {
    List list = new ArrayList();
    for (Object object : jsonArray) {
        if (object instanceof JSONObject) {
            JSONObject jsonObject = (JSONObject) object;
            HashMap map = new HashMap();
            for (Map.Entry entry : jsonObject.entrySet()) {
                Object obj = entry.getValue();
                if (obj instanceof JSONArray) {
                    map.put(entry.getKey(), handleJSONArray((JSONArray) entry.getValue()));
                } else if (obj instanceof JSONObject) {
                    map.put(entry.getKey(), handleJSONObject((JSONObject) entry.getValue()));
                } else {
                    map.put(entry.getKey(), entry.getValue());
                }
            }
            list.add(map);
        } else {
            list.add(object);
        }
    }
    return list;
}

private static Object handleJSONObject(JSONObject jsonObject){
    Map map = new HashMap<>();
    for (Entry _en2 : jsonObject.entrySet()) {
        map.put(_en2.getKey(), _en2.getValue());
    }
    return map;
}

/**** 功能描述: 
* 将dto转换为map* 推荐,此方法优于 DalUtils.convertToMap 方法* @param dto {}* @return map* @see DalUtils#convertToMap(Object)* @since [产品/模块版本](可选)*/ public static HashMap convertDTOToMap(Object dto) {if (dto == null) {return new HashMap<>();}// 支持值为null的属性转换Gson gson = new GsonBuilder().serializeNulls().create();String json = gson.toJson(dto);return json2HashMap(json); }

/**** 功能描述: 
* 将list转换为list** @param dtoList {}* @return list* @see [相关类/方法](可选)* @since [产品/模块版本](可选)*/ public static List> converterDTO2List(List dtoList) {List> list = new ArrayList();if (CollectionUtils.isNotEmpty(dtoList)) {for (T dto : dtoList) {Map map = convertDTOToMap(dto);list.add(map);}}return list; }

                
            

相关内容

热门资讯

泸州老窖董事长刘淼“重回前三”... 运营商财经网 周颖/文 在中国白酒行业中,茅台与五粮液行业龙头的地位非常稳固,但“老三之争”却从未停...
为什么越简单的人活的越高级?极... 作品声明:个人观点、仅供参考 在现代社会,物质极大丰富,信息爆炸增长,人们却常常感到疲惫,焦虑和迷茫...
张江半导体企业,完成数亿元融资... 01 融资综述 加冕研究院据张通社Link数据库统计,1月19日–1月25日,上海企业共发生19起融...
港股异动 | 智谱午后拉升 近... 1月27日,智谱午后拉升,一度涨超12%,随后涨幅回落。截至15时21分,该股涨7.56%,报233...
2025年国内一级市场募投状况... 2025年,国内一级市场募投状况有所升温。从投中数据近期公布的内容来看,年内投资数量及基金规模同比均...
龙湖集团销售额同比降37.54... 运营商财经网 章少霞/文 根据龙湖集团披露的这两年的财报,龙湖集团可谓中国最赚钱的房地产企业之一,董...
新网银行取得快速回溯数据专利 国家知识产权局信息显示,四川新网银行股份有限公司取得一项名为“一种快速回溯数据的方法及装置”的专利,...
锂、铜、铝、DRAM全在涨!中... 财联社1月27日讯(编辑 潇湘)有迹象显示,中国电动汽车行业当前正面临多重成本因素同时发酵所带来的前...
昔日丘栋荣所管产品如今多失意,... 作者:闵晓强 编辑:李 鑫 今年一月的倒数第二周,内地公募基金四季报落下帷幕,按照圈内的传统,拥有明...
特朗普:中国正在接管加拿大!话... 美国新闻报道称,美国总统特朗普发表了一篇措辞极为激烈的文章,声称:中国正在成功且彻底地接管加拿大,这...
港股异动丨南华期货股份创上市新... 延续昨日涨势,南华期货股份(2691.HK)今日盘中再度涨近10%至12.5港元,股价创上市新高。消...
马化腾员工大会讲话:金融科技不... 来源:市场资讯 (来源:北京商报) 北京商报讯(记者 廖蒙)1月26日,腾讯召开2025年度员工大会...
成交破1亿创历史新高!“重仓有... 1月27日,红利板块整体调整。数据显示,截至14时50分,“重仓有色”的中证红利质量ETF(1592...
爱芯元智通过港交所聆讯,掘金边... 2026年开年以来,港股IPO市场持续火热,AI赛道尤其耀眼,多只登陆港交所的新股上市后实现连续上涨...
东阳光药联手晶泰控股布局“AI... 上证报中国证券网讯(记者 孔令仪)1月26日,东阳光药与晶泰控股正式宣布签署战略合作协议。据悉,在此...
欧瑞博CEO王雄辉入选福布斯新... 2026年1月23日,欧瑞博创始人兼CEO王雄辉入选 “2025福布斯中国新时代颠覆力创始人” 榜单...
小红书爆款心法:吃透人性,轻松... 为啥精心打磨的干货没人看,随手发的日常却爆火?小红书流量逻辑的核心,从来都是对人性的精准拿捏。 一、...
浩天助力海港创投完成史河科技的... 浙江史河科技有限公司(以下简称"史河科技")宣布于2025年12月完成C轮融资(以下简称"本轮融资"...
商务部:2026年将进一步释放... 来源:滚动播报 (来源:上观新闻) 2025年中国社会消费品零售总额首次突破50万亿元,增长平稳,...
黄金白银价格齐创新高,牛市还能... 机构认为,黄金短期仍处于强势区间,金融属性仍在强势回归中,但需警惕交易过热后的波动加剧风险,白银短期...