2 dmzhjg dmzhjg 于 2017.08.30 14:19 提问

JSON数据分组合并,java语言 9C

{
"rows": [
{
"2016-2017jh": 0,
"2016-2017pos": 0,
"2016-2017xj": 0,
"2016-2017zp": 471210,
"2016-2017zz": 0,
"bName": "二中供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 0,
"2015-2016xj": 0,
"2015-2016zp": 0,
"2015-2016zz": 0,
"bName": "保利小学供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 0,
"2016-2017xj": 0,
"2016-2017zp": 194824,
"2016-2017zz": 50797.65,
"bName": "保利小学供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 0,
"2015-2016xj": 0,
"2015-2016zp": 0,
"2015-2016zz": 0,
"bName": "十三中供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 0,
"2016-2017xj": 0,
"2016-2017zp": 1354303.31,
"2016-2017zz": 0,
"bName": "十三中供热站"
},
{
"2013-2014jh": 0,
"2013-2014pos": 4947.33,
"2013-2014xj": 1062.16,
"2013-2014zp": 0,
"2013-2014zz": 0,
"bName": "十局供热站"
},
{
"2014-2015jh": 0,
"2014-2015pos": 1951.1,
"2014-2015xj": 4236.42,
"2014-2015zp": 0,
"2014-2015zz": 0,
"bName": "十局供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 9611.94,
"2015-2016xj": 16457.62,
"2015-2016zp": 0,
"2015-2016zz": 0,
"bName": "十局供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 420508.9,
"2016-2017xj": 756784.75,
"2016-2017zp": 104954.4,
"2016-2017zz": 0,
"bName": "十局供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 0,
"2015-2016xj": 0,
"2015-2016zp": 0,
"2015-2016zz": -208827.6,
"bName": "商检供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 0,
"2016-2017xj": 0,
"2016-2017zp": 0,
"2016-2017zz": 708827.6,
"bName": "商检供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 0,
"2016-2017xj": 0,
"2016-2017zp": 0,
"2016-2017zz": 417565,
"bName": "好运来供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 0,
"2016-2017xj": 38167.37,
"2016-2017zp": 0,
"2016-2017zz": 0,
"bName": "建行宿舍供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 26245.6,
"2015-2016xj": 9423.42,
"2015-2016zp": 0,
"2015-2016zz": 452.41,
"bName": "恒大供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 2466131.85,
"2016-2017xj": 636033.78,
"2016-2017zp": 0,
"2016-2017zz": 57569.38,
"bName": "恒大供热站"
},
{
"2013-2014jh": 0,
"2013-2014pos": 441.77,
"2013-2014xj": 4572.81,
"2013-2014zp": 0,
"2013-2014zz": 0,
"bName": "检察院供热站"
},
{
"2014-2015jh": 0,
"2014-2015pos": 1923.22,
"2014-2015xj": 8381.99,
"2014-2015zp": 0,
"2014-2015zz": 0,
"bName": "检察院供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 5082.01,
"2015-2016xj": 12044.59,
"2015-2016zp": 0,
"2015-2016zz": 0,
"bName": "检察院供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 71014.85,
"2016-2017xj": 163715.61,
"2016-2017zp": 0,
"2016-2017zz": 0,
"bName": "检察院供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 39696.53,
"2015-2016xj": 11353.31,
"2015-2016zp": 0,
"2015-2016zz": 0,
"bName": "盛邦供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 2714461.5,
"2016-2017xj": 851117.69,
"2016-2017zp": 0,
"2016-2017zz": 17265.42,
"bName": "盛邦供热站"
},
{
"2013-2014jh": 0,
"2013-2014pos": 3588.74,
"2013-2014xj": 5033.21,
"2013-2014zp": 0,
"2013-2014zz": 0,
"bName": "石药供热站"
},
{
"2014-2015jh": 0,
"2014-2015pos": 3381.21,
"2014-2015xj": 4418.42,
"2014-2015zp": 0,
"2014-2015zz": 0,
"bName": "石药供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 2474.6,
"2015-2016xj": 4548.11,
"2015-2016zp": 36300,
"2015-2016zz": 0,
"bName": "石药供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 248854.01,
"2016-2017xj": 488956.26,
"2016-2017zp": 0,
"2016-2017zz": 8115.66,
"bName": "石药供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 74623.91,
"2015-2016xj": 20207.59,
"2015-2016zp": 0,
"2015-2016zz": 3049.46,
"bName": "祥云国际供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 2562864.49,
"2016-2017xj": 902804.41,
"2016-2017zp": 0,
"2016-2017zz": 10911.91,
"bName": "祥云国际供热站"
},
{
"2014-2015jh": 0,
"2014-2015pos": 3328.36,
"2014-2015xj": 105.36,
"2014-2015zp": 0,
"2014-2015zz": 0,
"bName": "站前分局供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 2822.81,
"2015-2016xj": 3616.6,
"2015-2016zp": 0,
"2015-2016zz": 0,
"bName": "站前分局供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 52500.95,
"2016-2017xj": 22153.04,
"2016-2017zp": 0,
"2016-2017zz": 3356.5,
"bName": "站前分局供热站"
},
{
"2014-2015jh": 0,
"2014-2015pos": 530.8,
"2014-2015xj": 2764,
"2014-2015zp": 0,
"2014-2015zz": 0,
"bName": "第六干休所供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 1676.69,
"2015-2016xj": 1169.31,
"2015-2016zp": 0,
"2015-2016zz": 0,
"bName": "第六干休所供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 73537.6,
"2016-2017xj": 304322.69,
"2016-2017zp": 0,
"2016-2017zz": 100000,
"bName": "第六干休所供热站"
},
{
"2013-2014jh": 0,
"2013-2014pos": 2482.98,
"2013-2014xj": 0,
"2013-2014zp": 0,
"2013-2014zz": 0,
"bName": "美迪亚供热站"
},
{
"2014-2015jh": 0,
"2014-2015pos": 5175.43,
"2014-2015xj": 953.25,
"2014-2015zp": 0,
"2014-2015zz": 0,
"bName": "美迪亚供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 9452.31,
"2015-2016xj": 3347.78,
"2015-2016zp": 0.02,
"2015-2016zz": 0,
"bName": "美迪亚供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 277220.3,
"2016-2017xj": 156629.97,
"2016-2017zp": 7849.32,
"2016-2017zz": 42000,
"bName": "美迪亚供热站"
},
{
"2013-2014jh": 0,
"2013-2014pos": 4006.85,
"2013-2014xj": 4127.46,
"2013-2014zp": 0,
"2013-2014zz": 0,
"bName": "金世界供热站"
},
{
"2014-2015jh": 0,
"2014-2015pos": 34384.94,
"2014-2015xj": 16307.75,
"2014-2015zp": 251.45,
"2014-2015zz": 0,
"bName": "金世界供热站"
},
{
"2015-2016jh": 0,
"2015-2016pos": 27243.15,
"2015-2016xj": 11901.27,
"2015-2016zp": -2977.57,
"2015-2016zz": -3942.18,
"bName": "金世界供热站"
},
{
"2016-2017jh": 0,
"2016-2017pos": 2225791.08,
"2016-2017xj": 1044820.17,
"2016-2017zp": 23673.65,
"2016-2017zz": 219058.78,
"bName": "金世界供热站"
}
],
"total": 41
}
相同的BName合并为一组

6个回答

qq_38005982
qq_38005982   2017.08.30 14:49

你这明显是ajax在前端随意了一下接收输出而已,你为什么一定要在json里合并,你在js里拿到后想怎么捏怎么捏

lcmsx
lcmsx   2017.08.30 15:02

如楼上所说,数据最好不要在服务器端处理,浪费服务器的性能,而客户端性能过剩。把数据传送到客户端处理更好些。

但是如果楼主非要服务端处理也是可以的。

maolin319
maolin319   2017.08.30 15:05

没必要再后台这样做!如果你实在需要可以转换你熟悉的数据类型操作,然后再转回来呗

oliver_105397
oliver_105397   2017.08.30 15:35

可以用JavaScript来遍历这个json数组,然后根据你自己的需要来把数据分派到指定的前端代码中

little_prog
little_prog   2017.08.30 15:37

你如果需要在服务器处理的话,就只能将将该数据转为json对象后取出每一项去判断,然后再把相同的bname项进行合并

 JSONObject parse = JSON.parseObject(dataStr);
        JSONArray rows = parse.getJSONArray("rows");
        Map<String,JSONObject> result = new HashMap<>();

        for (int i=0;i<rows.size();i++){
            JSONObject jsonObject = rows.getJSONObject(i);
            String bName = jsonObject.getString("bName");
            if (result.containsKey(bName)){
                JSONObject o1 = result.get(bName);
                Iterator<String> iterator = jsonObject.keySet().iterator();
                while (iterator.hasNext()){
                    String next = iterator.next();
                    if ("bName".equals(next)) continue;
                    o1.put(next,jsonObject.get(next));
                }
            }else{
                result.put(bName,jsonObject);
            }

        }

        System.out.println(result);
dmzhjg
dmzhjg   2017.08.30 16:46

前端使用EasyUI,datagrid,必须返回组装好的JSON,动态表头如何实现

Csdn user default icon
上传中...
上传图片
插入图片