irpas技术客

解决问题 com.alibaba.fastjson.JSONObject cannot be cast to xxx_Thexin.

未知 1779

{ "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转自定义类的方式进行改变即可。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #解决问题 #Cannot #be #cast #To #xxx