求java8的语法进来对json数组优化

例子数据结构

{
    "categories":[
        "苹果",
        "三星",
        "小米",
        "oppo",
        "vivo"
    ],
    "series":[
        {
            "name":"手机品牌",
            "data":[
                1000879,
                3400879,
                2300879,
                5400879,
                3400879
            ]
        }
    ]
}

源数据 

public static void main(String[] args) {
		String str = "{\"id\":168,\"userId\":\"1\",\"name\":\"设备时间统计\",\"categoryName\":\"数据可视化\",\"userName\":null,\"loginName\":null,\"data\":\"{\\\"datasetId\\\":52,\\\"config\\\":{\\\"valueAxis\\\":\\\"vertical\\\",\\\"chart_type\\\":\\\"line\\\",\\\"keys\\\":[{\\\"col\\\":\\\"上线时间\\\",\\\"values\\\":[],\\\"sort\\\":\\\"asc\\\",\\\"id\\\":\\\"4393708c-f628-47fe-b4db-b7f762b902d7\\\",\\\"type\\\":\\\"eq\\\"}],\\\"values\\\":[{\\\"name\\\":\\\"\\\",\\\"series_type\\\":\\\"stackbar\\\",\\\"type\\\":\\\"value\\\",\\\"cols\\\":[{\\\"col\\\":\\\"id\\\",\\\"alias\\\":\\\"数量\\\",\\\"aggregate_type\\\":\\\"count\\\"}]}],\\\"groups\\\":[{\\\"col\\\":\\\"cname\\\",\\\"values\\\":[],\\\"alias\\\":\\\"设备名称\\\",\\\"sort\\\":\\\"asc\\\",\\\"id\\\":\\\"1732b709-cabe-4390-aaed-65c3d74924e5\\\",\\\"type\\\":\\\"eq\\\"}],\\\"filters\\\":[],\\\"coordinateSystem\\\":\\\"cartesian2d\\\",\\\"option\\\":{}},\\\"expressions\\\":[],\\\"filterGroups\\\":[{\\\"filters\\\":[{\\\"col\\\":\\\"上线时间\\\",\\\"values\\\":[\\\"2020-07\\\",\\\"2020-08\\\",\\\"2020-09\\\",\\\"2020-10\\\",\\\"2020-11\\\",\\\"2020-12\\\"],\\\"type\\\":\\\"=\\\"}],\\\"id\\\":\\\"5c57ae8c-2973-4826-809f-61009c5e3570\\\",\\\"group\\\":\\\"2020年下半年\\\"}]}\",\"permission\":null,\"createTime\":1608591619000,\"updateTime\":1615535051000,\"widgetSql\":\"SELECT cname,上线时间,COUNT(id) as '数量' FROM  (select *,DATE_FORMAT(create_date,'%Y-%m') '上线时间' from dv_stat_equipment) cb_view    GROUP BY cname, 上线时间\"}\n";
		String str2 = "[{\"上线时间\":\"2020-01\",\"数量\":12,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-02\",\"数量\":46,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-03\",\"数量\":34,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-04\",\"数量\":39,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-05\",\"数量\":38,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-06\",\"数量\":33,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-07\",\"数量\":34,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-08\",\"数量\":35,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-09\",\"数量\":35,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-10\",\"数量\":47,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-11\",\"数量\":47,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-12\",\"数量\":37,\"cname\":\"位移传感\"},{\"上线时间\":\"2020-01\",\"数量\":8,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-02\",\"数量\":37,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-03\",\"数量\":41,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-04\",\"数量\":36,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-05\",\"数量\":44,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-06\",\"数量\":31,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-07\",\"数量\":36,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-08\",\"数量\":42,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-09\",\"数量\":38,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-10\",\"数量\":46,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-11\",\"数量\":25,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-12\",\"数量\":41,\"cname\":\"压力传感\"},{\"上线时间\":\"2020-01\",\"数量\":14,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-02\",\"数量\":29,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-03\",\"数量\":39,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-04\",\"数量\":45,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-05\",\"数量\":43,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-06\",\"数量\":36,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-07\",\"数量\":31,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-08\",\"数量\":23,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-09\",\"数量\":58,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-10\",\"数量\":40,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-11\",\"数量\":45,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-12\",\"数量\":49,\"cname\":\"图像传感\"},{\"上线时间\":\"2020-01\",\"数量\":13,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-02\",\"数量\":33,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-03\",\"数量\":43,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-04\",\"数量\":34,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-05\",\"数量\":51,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-06\",\"数量\":25,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-07\",\"数量\":46,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-08\",\"数量\":46,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-09\",\"数量\":43,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-10\",\"数量\":38,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-11\",\"数量\":32,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-12\",\"数量\":50,\"cname\":\"声音传感\"},{\"上线时间\":\"2020-01\",\"数量\":14,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-02\",\"数量\":28,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-03\",\"数量\":38,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-04\",\"数量\":42,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-05\",\"数量\":38,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-06\",\"数量\":29,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-07\",\"数量\":53,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-08\",\"数量\":41,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-09\",\"数量\":50,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-10\",\"数量\":42,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-11\",\"数量\":34,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-12\",\"数量\":48,\"cname\":\"射频传感\"},{\"上线时间\":\"2020-01\",\"数量\":14,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-02\",\"数量\":30,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-03\",\"数量\":52,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-04\",\"数量\":36,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-05\",\"数量\":45,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-06\",\"数量\":25,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-07\",\"数量\":42,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-08\",\"数量\":47,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-09\",\"数量\":40,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-10\",\"数量\":42,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-11\",\"数量\":40,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-12\",\"数量\":40,\"cname\":\"惯性传感\"},{\"上线时间\":\"2020-01\",\"数量\":17,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-02\",\"数量\":39,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-03\",\"数量\":43,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-04\",\"数量\":32,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-05\",\"数量\":51,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-06\",\"数量\":26,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-07\",\"数量\":41,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-08\",\"数量\":39,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-09\",\"数量\":41,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-10\",\"数量\":44,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-11\",\"数量\":35,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-12\",\"数量\":41,\"cname\":\"气体传感\"},{\"上线时间\":\"2020-01\",\"数量\":10,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-02\",\"数量\":41,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-03\",\"数量\":45,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-04\",\"数量\":36,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-05\",\"数量\":41,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-06\",\"数量\":36,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-07\",\"数量\":45,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-08\",\"数量\":46,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-09\",\"数量\":46,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-10\",\"数量\":36,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-11\",\"数量\":37,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-12\",\"数量\":32,\"cname\":\"温度传感\"},{\"上线时间\":\"2020-01\",\"数量\":14,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-02\",\"数量\":44,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-03\",\"数量\":48,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-04\",\"数量\":46,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-05\",\"数量\":43,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-06\",\"数量\":59,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-07\",\"数量\":41,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-08\",\"数量\":35,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-09\",\"数量\":53,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-10\",\"数量\":45,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-11\",\"数量\":49,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-12\",\"数量\":43,\"cname\":\"湿度传感\"},{\"上线时间\":\"2020-01\",\"数量\":11,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-02\",\"数量\":37,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-03\",\"数量\":43,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-04\",\"数量\":37,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-05\",\"数量\":33,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-06\",\"数量\":34,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-07\",\"数量\":31,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-08\",\"数量\":37,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-09\",\"数量\":42,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-10\",\"数量\":27,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-11\",\"数量\":37,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-12\",\"数量\":46,\"cname\":\"红外传感\"},{\"上线时间\":\"2020-01\",\"数量\":9,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-02\",\"数量\":33,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-03\",\"数量\":45,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-04\",\"数量\":43,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-05\",\"数量\":45,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-06\",\"数量\":31,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-07\",\"数量\":45,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-08\",\"数量\":58,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-09\",\"数量\":39,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-10\",\"数量\":50,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-11\",\"数量\":45,\"cname\":\"速度传感\"},{\"上线时间\":\"2020-12\",\"数量\":43,\"cname\":\"速度传感\"}]";
	}

最后转成这样的

{
    "series":[
        {
            "data":[
                13,
                33,
                43,
                34,
                51,
                25,
                46,
                46,
                43,
                38,
                32,
                50
            ],
            "name":"声音传感"
        },
        {
            "data":[
                14,
                44,
                48,
                46,
                43,
                59,
                41,
                35,
                53,
                45,
                49,
                43
            ],
            "name":"湿度传感"
        },
        {
            "data":[
                14,
                30,
                52,
                36,
                45,
                25,
                42,
                47,
                40,
                42,
                40,
                40
            ],
            "name":"惯性传感"
        },
        {
            "data":[
                14,
                29,
                39,
                45,
                43,
                36,
                31,
                23,
                58,
                40,
                45,
                49
            ],
            "name":"图像传感"
        },
        {
            "data":[
                8,
                37,
                41,
                36,
                44,
                31,
                36,
                42,
                38,
                46,
                25,
                41
            ],
            "name":"压力传感"
        },
        {
            "data":[
                9,
                33,
                45,
                43,
                45,
                31,
                45,
                58,
                39,
                50,
                45,
                43
            ],
            "name":"速度传感"
        },
        {
            "data":[
                14,
                28,
                38,
                42,
                38,
                29,
                53,
                41,
                50,
                42,
                34,
                48
            ],
            "name":"射频传感"
        },
        {
            "data":[
                17,
                39,
                43,
                32,
                51,
                26,
                41,
                39,
                41,
                44,
                35,
                41
            ],
            "name":"气体传感"
        },
        {
            "data":[
                11,
                37,
                43,
                37,
                33,
                34,
                31,
                37,
                42,
                27,
                37,
                46
            ],
            "name":"红外传感"
        },
        {
            "data":[
                10,
                41,
                45,
                36,
                41,
                36,
                45,
                46,
                46,
                36,
                37,
                32
            ],
            "name":"温度传感"
        },
        {
            "data":[
                12,
                46,
                34,
                39,
                38,
                33,
                34,
                35,
                35,
                47,
                47,
                37
            ],
            "name":"位移传感"
        }
    ],
    "categories":[
        "2020-01",
        "2020-02",
        "2020-03",
        "2020-04",
        "2020-05",
        "2020-06",
        "2020-07",
        "2020-08",
        "2020-09",
        "2020-10",
        "2020-11",
        "2020-12"
    ]
}

优化json数组什么?

太多垃圾信息了,根本不想看,你直接列出原数据格式和目标数据格式吧

可以直接用stream获取数组最后的元素和类型转换