{"msg": "success","code": "success","data": [{"create_time": "2020-11-09 11:54:08","exec_status": "正常","host_id": 1527414,"id": 3136268,"ip": "10.127.22.132","modify_time": "2020-11-09 11:54:15","task_name": "dns插件执行","ts_id": 1600,"uuid": "1ca74de5-35f9-4f91-8cfb-7d4311eb8e45"},{"create_time": "2020-11-09 11:50:18","exec_status": "正常","host_id": 1527414,"id": 3136267,"ip": "10.127.22.132","modify_time": "2020-11-09 11:50:25","task_name": "dns插件执行","ts_id": 1599,"uuid": "1ca74de5-35f9-4f91-8cfb-7d4311eb8e45"}]
}
获取到的json如上所示。
JSONObject object = JSONObject.parseObject(response);List<QlbSnatPluginExecute> qlbSnatPluginExecutes = (List<QlbSnatPluginExecute>) object.get("data");Map<String,List<QlbSnatPluginExecute>> map = qlbSnatPluginExecutes.stream().collect(Collectors.groupingBy(QlbSnatPluginExecute::getIp));
这么写在第三行代码会报错com.alibaba.fastjson.JSONObject cannot be cast to xxx
经过排查发现是嵌套的json处理问题,需要换一种处理方式。
JSONObject object = JSONObject.parseObject(response);List<QlbSnatPluginExecute> qlbSnatPluginExecutes = JSON.parseArray(object.getString("data"), QlbSnatPluginExecute.class);Map<String,List<QlbSnatPluginExecute>> map = qlbSnatPluginExecutes.stream().collect(Collectors.groupingBy(QlbSnatPluginExecute::getIp));
第二行代码中json转自定义类的方式进行改变即可。