格式化大类小类数据

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;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值