1. 格式化前数据
[
{
"N_MAIN_TYPE": 1,
"S_SUB_TYPE": "内部",
"N_PV": 111,
"N_UV": 55,
"N_INDEP_IP": 123,
"N_AVERAGE_ACCESS": 1234245,
"N_OUT_OF": "2.0%"
},
{
"N_MAIN_TYPE": 1,
"S_SUB_TYPE": "直接",
"N_PV": 222,
"N_UV": 66,
"N_INDEP_IP": 584,
"N_AVERAGE_ACCESS": 565254,
"N_OUT_OF": "45.45%"
},
{
"N_MAIN_TYPE": 1,
"S_SUB_TYPE": "搜索引擎",
"N_PV": 333,
"N_UV": 77,
"N_INDEP_IP": 3354,
"N_AVERAGE_ACCESS": 346562,
"N_OUT_OF": "15.45%"
},
{
"N_MAIN_TYPE": 1,
"S_SUB_TYPE": "外部",
"N_PV": 444,
"N_UV": 88,
"N_INDEP_IP": 4767,
"N_AVERAGE_ACCESS": 89548,
"N_OUT_OF": "35.56%"
},
{
"N_MAIN_TYPE": 1,
"S_SUB_TYPE": "广告",
"N_PV": 555,
"N_UV": 99,
"N_INDEP_IP": 565,
"N_AVERAGE_ACCESS": 687245,
"N_OUT_OF": "35.56%"
},
{
"N_MAIN_TYPE": 2,
"S_SUB_TYPE": "新用户",
"N_PV": 12585,
"N_UV": 9589,
"N_INDEP_IP": 5145,
"N_AVERAGE_ACCESS": 2356554,
"N_OUT_OF": "35.56%"
},
{
"N_MAIN_TYPE": 2,
"S_SUB_TYPE": "未绑定通行证老用户",
"N_PV": 9854,
"N_UV": 8452,
"N_INDEP_IP": 3614,
"N_AVERAGE_ACCESS": 57687,
"N_OUT_OF": "35.56%"
},
{
"N_MAIN_TYPE": 2,
"S_SUB_TYPE": "绑定通行证用户",
"N_PV": 5124,
"N_UV": 3569,
"N_INDEP_IP": 1545,
"N_AVERAGE_ACCESS": 689121,
"N_OUT_OF": "35.56%"
}
]
2. 格式化后数据
{
"1": [
{
"subType": "内部",
"pv": 111,
"uv": 55,
"indepIp": 123,
"averageAccess": "1234245",
"outOf": "2.0%"
},
{
"subType": "直接",
"pv": 222,
"uv": 66,
"indepIp": 584,
"averageAccess": "565254",
"outOf": "45.45%"
},
{
"subType": "搜索引擎",
"pv": 333,
"uv": 77,
"indepIp": 3354,
"averageAccess": "346562",
"outOf": "15.45%"
},
{
"subType": "外部",
"pv": 444,
"uv": 88,
"indepIp": 4767,
"averageAccess": "89548",
"outOf": "35.56%"
},
{
"subType": "广告",
"pv": 555,
"uv": 99,
"indepIp": 565,
"averageAccess": "687245",
"outOf": "35.56%"
}
],
"2": [
{
"subType": "新用户",
"pv": 12585,
"uv": 9589,
"indepIp": 5145,
"averageAccess": "2356554",
"outOf": "35.56%"
},
{
"subType": "未绑定通行证老用户",
"pv": 9854,
"uv": 8452,
"indepIp": 3614,
"averageAccess": "57687",
"outOf": "35.56%"
},
{
"subType": "绑定通行证用户",
"pv": 5124,
"uv": 3569,
"indepIp": 1545,
"averageAccess": "689121",
"outOf": "35.56%"
}
]
}
3. Java代码
package test1;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class FormatData {
public static void main(String[] args) {
Map<String, List<Map<String, Object>>> voList = null;
List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new LinkedHashMap<String, Object>();
map1.put("N_MAIN_TYPE", 1);
map1.put("S_SUB_TYPE", "内部");
map1.put("N_PV", 111);
map1.put("N_UV", 55);
map1.put("N_INDEP_IP", 123);
map1.put("N_AVERAGE_ACCESS", 1234245);
map1.put("N_OUT_OF", "2.0%");
Map<String, Object> map2 = new LinkedHashMap<String, Object>();
map2.put("N_MAIN_TYPE", 1);
map2.put("S_SUB_TYPE", "直接");
map2.put("N_PV", 222);
map2.put("N_UV", 66);
map2.put("N_INDEP_IP", 584);
map2.put("N_AVERAGE_ACCESS", 565254);
map2.put("N_OUT_OF", "45.45%");
Map<String, Object> map3 = new LinkedHashMap<String, Object>();
map3.put("N_MAIN_TYPE", 1);
map3.put("S_SUB_TYPE", "搜索引擎");
map3.put("N_PV", 333);
map3.put("N_UV", 77);
map3.put("N_INDEP_IP", 3354);
map3.put("N_AVERAGE_ACCESS", 346562);
map3.put("N_OUT_OF", "15.45%");
Map<String, Object> map4 = new LinkedHashMap<String, Object>();
map4.put("N_MAIN_TYPE", 1);
map4.put("S_SUB_TYPE", "外部");
map4.put("N_PV", 444);
map4.put("N_UV", 88);
map4.put("N_INDEP_IP", 4767);
map4.put("N_AVERAGE_ACCESS", 89548);
map4.put("N_OUT_OF", "35.56%");
Map<String, Object> map5 = new LinkedHashMap<String, Object>();
map5.put("N_MAIN_TYPE", 1);
map5.put("S_SUB_TYPE", "广告");
map5.put("N_PV", 555);
map5.put("N_UV", 99);
map5.put("N_INDEP_IP", 565);
map5.put("N_AVERAGE_ACCESS", 687245);
map5.put("N_OUT_OF", "35.56%");
Map<String, Object> map6 = new LinkedHashMap<String, Object>();
map6.put("N_MAIN_TYPE", 2);
map6.put("S_SUB_TYPE", "新用户");
map6.put("N_PV", 12585);
map6.put("N_UV", 9589);
map6.put("N_INDEP_IP", 5145);
map6.put("N_AVERAGE_ACCESS", 2356554);
map6.put("N_OUT_OF", "35.56%");
Map<String, Object> map7 = new LinkedHashMap<String, Object>();
map7.put("N_MAIN_TYPE", 2);
map7.put("S_SUB_TYPE", "未绑定通行证老用户");
map7.put("N_PV", 9854);
map7.put("N_UV", 8452);
map7.put("N_INDEP_IP", 3614);
map7.put("N_AVERAGE_ACCESS", 57687);
map7.put("N_OUT_OF", "35.56%");
Map<String, Object> map8 = new LinkedHashMap<String, Object>();
map8.put("N_MAIN_TYPE", 2);
map8.put("S_SUB_TYPE", "绑定通行证用户");
map8.put("N_PV", 5124);
map8.put("N_UV", 3569);
map8.put("N_INDEP_IP", 1545);
map8.put("N_AVERAGE_ACCESS", 689121);
map8.put("N_OUT_OF", "35.56%");
resultList.add(map1);
resultList.add(map2);
resultList.add(map3);
resultList.add(map4);
resultList.add(map5);
resultList.add(map6);
resultList.add(map7);
resultList.add(map8);
System.out.println(JsonUtil.toJson(resultList));
voList = convertFlowDetail(resultList);
System.out.println(JsonUtil.toJson(voList));
}
/**
* 格式化数据
*
* @param resultList
* 原始数据
* @return
*/
private static Map<String, List<Map<String, Object>>> convertFlowDetail(List<Map<String, Object>> resultList) {
// 数据库返回的数据为空
if (resultList == null || resultList.size() == 0) {
return new LinkedHashMap<String, List<Map<String, Object>>>();
}
// 大类map数据
Map<String, List<Map<String, Object>>> mainTypeMap = new LinkedHashMap<String, List<Map<String, Object>>>();
for (Map<String, Object> resultMap : resultList) {
mainTypeMap.put(String.valueOf(resultMap.get("N_MAIN_TYPE")), new ArrayList<Map<String, Object>>());
}
// 小类list数据
for (Map<String, Object> resultMap : resultList) {
// 小技巧:根据大类map获得小类list
List<Map<String, Object>> subTypeList = mainTypeMap.get(String.valueOf(resultMap.get("N_MAIN_TYPE")));
Map<String, Object> subTypeMap = new LinkedHashMap<String, Object>();
subTypeMap.put("subType", String.valueOf(resultMap.get("S_SUB_TYPE")));
subTypeMap.put("pv", Long.valueOf(String.valueOf(resultMap.get("N_PV"))));
subTypeMap.put("uv", Long.valueOf(String.valueOf(resultMap.get("N_UV"))));
subTypeMap.put("indepIp", Long.valueOf(String.valueOf(resultMap.get("N_INDEP_IP"))));
subTypeMap.put("averageAccess", String.valueOf(resultMap.get("N_AVERAGE_ACCESS")));
subTypeMap.put("outOf", (String.valueOf(resultMap.get("N_OUT_OF"))));
subTypeList.add(subTypeMap);
}
return mainTypeMap;
}
}