java中混合格式的转换

一个接口的格式让我转换了很久,关键是自己没绕清楚-->

将如下格式

{
            "0": 
            [
                {"CDF"=26533039.469953783},
                {
                    "data": 8170396.845451221,
                    "name": "FCZ"
                },
                {
                    "data": 44017461.58925395,
                    "name": "FOC"
                },
                {
                    "data": 31342464.874329574,
                    "name": "FTX"
                },
                {
                    "data": 20781123.406772435,
                    "name": "FJZ"
                }
            ],
            "1":
            [
                {
                    "data": 4745196,
                    "name": "CDF"
                },
                {
                    "data": 4242578.04442152,
                    "name": "FJZ"
                },
                {
                    "data": 10727225.069249999,
                    "name": "FOC"
                },
                {
                    "data": 6443384.8794,
                    "name": "FTX"
                }
            ],
            "2": 
            [
                {
                    "data": 19309465.21733437,
                    "name": "CDF"
                },
                {
                    "data": 1251297.4700612198,
                    "name": "FCZ"
                },
                {
                    "data": 32773415.813453887,
                    "name": "FOC"
                },
                {
                    "data": 22407779.874329574,
                    "name": "FTX"
                },
                {
                    "data": 16784998.655292396,
                    "name": "FJZ"
                }
            ],
            "3": 
            [
                {
                    "data": 11968770.2526194,
                    "name": "CDF"
                },
                {
                    "data": 6919099.37539,
                    "name": "FCZ"
                },
                {
                    "data": 21971270.845049996,
                    "name": "FOC"
                },
                {
                    "data": 15378069.8794,
                    "name": "FTX"
                },
                {
                    "data": 8238702.79590152,
                    "name": "FJZ"
                }
            ]
}

转换成:

{
    "status": 0,
    "errmsg": "",
    "payload": {
        "series": [
            {
                "data": [
                    26533473.941603787,
                    4745196,
                    26533473.941603787,
                    4745196
                ],
                "name": "CDF"
            },
            {
                "data": [
                    8170396.845451221,
                    0,
                    4283893.885451222,
                    3886502.96
                ],
                "name": "FCZ"
            },
            {
                "data": [
                    44037800.57695395,
                    10727225.069249999,
                    36498540.49695395,
                    18266485.149249997
                ],
                "name": "FOC"
            },
            {
                "data": [
                    31288313.720709573,
                    6443384.8794,
                    35415908.60010969,
                    2315790
                ],
                "name": "FTX"
            },
            {
                "data": [
                    22023258.004772432,
                    4242578.04442152,
                    23663317.271842975,
                    2602518.777351
                ],
                "name": "FJZ"
            }
        ],
        "Axis_data": [
            "0",
            "1",
            "2",
            "3"
        ]
    }
}

代码如下:

public static Map<Object, Object> TurnDataType(List<Map> listMap){
        
        List listR = new  ArrayList<>();
        List listX = new  ArrayList<>();
        Map<Object, Object> resMap = new HashMap<>();
        List<Map> series = new ArrayList<Map>(); //by xie
        
        
        listR = removeDuplicate(listOnly(listMap));
        for(int i = 0 ; i < listR.size(); i++) {
            
            Map<Object, Object> m = new HashMap<>(); //by xie
            List<Double> d = new ArrayList<Double>(); //by xie
            m.put("name", listR.get(i)); //by xie
            m.put("data", d);
            
            for(int j = 0; j < listMap.size(); j++) {
                Map map=listMap.get(j);
                if (!(map.get("0").toString().isEmpty())) {
                    listX.add("Top 10");
                    boolean isNull = true; //by xie
                    for(Map map1:(List<Map>)map.get("0")) {
                        if (map1.get("name").equals(listR.get(i))) {
                            d.add(Double.parseDouble(map1.get("data").toString())); //by xie
                            isNull = false; //by xie
                        }
                    }
                    if (isNull) d.add(0.0); //by xie
                }
                
                if (!(map.get("1").toString().isEmpty())) {
                    listX.add("No Top 10");
                    boolean isNull = true; //by xie
                    for(Map map1:(List<Map>)map.get("1")) {
                        if (map1.get("name").equals(listR.get(i))) {
                            d.add(Double.parseDouble(map1.get("data").toString())); //by xie
                            isNull = false; //by xie
                        }
                    }
                    if (isNull) d.add(0.0); //by xie
                }
                
                if (!(map.get("2").toString().isEmpty())) {
                    listX.add("Top 20");
                    boolean isNull = true; //by xie
                    for(Map map1:(List<Map>)map.get("2")) {
                        if (map1.get("name").equals(listR.get(i))) {
                            d.add(Double.parseDouble(map1.get("data").toString())); //by xie
                            isNull = false; //by xie
                        }
                    }
                    if (isNull) d.add(0.0); //by xie
                }
                if (!(map.get("3").toString().isEmpty())) {
                    listX.add("No Top 20");
                    boolean isNull = true; //by xie
                    for(Map map1:(List<Map>)map.get("3")) {
                        if (map1.get("name").equals(listR.get(i))) {
                            d.add(Double.parseDouble(map1.get("data").toString())); //by xie
                            isNull = false; //by xie
                        }
                    }
                    if (isNull) d.add(0.0); //by xie
                }

                }
                series.add(m);
            }
        resMap.put("Axis_data", removeDuplicate(listX));
        resMap.put("series", series);

        return resMap;
        }

猜你喜欢

转载自blog.csdn.net/Com_ma/article/details/81810203