栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java嵌套对象转大map(扁平化)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java嵌套对象转大map(扁平化)

        部分业务场景在传输数据时,需要的数据格式是扁平化的json格式,而在java对象中有时候为了解耦会做一些嵌套(即对象中包含对象,多层也是常有)。下面的代码可以提供该能力

处理单个对象:ObjectToMapUtil.nestedObj2Map

处理列表对象:ObjectToMapUtil.nestedObjList2ListMap

package cn.sto.station.twin.common.util;

import cn.sto.station.twin.common.util.json.JsonUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Slf4j
public class ObjectToMapUtil {

    private static final String SEPARATOR = "_";

    
    public static Map nestedObj2Map(Object object) {
        Map maps = JSON.parseObject(JSON.toJSONString(object), Map.class);
        Map result = new HashMap<>();
        maps.forEach((key, value) -> {
            common(maps, result, key, value, key);
        });
        return result;
    }

    
    public static  List> nestedObjList2ListMap(List objectList) {
        ArrayList> resultList = new ArrayList<>();
        for (T t : objectList) {
            resultList.add(nestedObj2Map(t));
        }
        return resultList;
    }

    public static Map nestedObj2Map(Map maps, String prefix) {
        Map result = new HashMap<>();
        String keyPrefix = prefix + SEPARATOR;
        maps.forEach((key, value) -> {
            String newKey = keyPrefix + key;
            common(maps, result, key, value, newKey);
        });
        return result;
    }

    public static void common(Map maps, Map result, String key, Object value, String newKey) {
        if (maps.get(key) != null && value instanceof JSONObject) {
            Map subMaps = (Map) maps.get(key);
            Map map = nestedObj2Map(subMaps, newKey);
            if (map != null && !map.isEmpty()) {
                result.putAll(map);
            }
        } else {
            result.put(newKey, maps.get(key));
        }
    }

    

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/962179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号