远程调用出现json解析异常
操作失败,Error while extracting response for type [java.util.List<org.jeecg.modules.face.entity.FaceDevice>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<org.jeecg.modules.face.entity.FaceDevice>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<org.jeecg.modules.face.entity.FaceDevice>` out of START_OBJECT token at [Source: (PushbackInputStream); line: 1, column: 1]
架构:微服务
过程:
在Feign调用别的服务的API方法时,出现了该异常,代码如下
List<FaceDevice> ytSCameras = faceAPI.getDevicesByIds(ids);
为了排除是API方法报错,所以不通过feign调用,通过直接调用该API方法
/*** * 根据id集合查人脸设备face_device * @param ids * @return */ @GetMapping("/face/api/getDevicesByIds") List<FaceDevice> getDevicesByIds(@RequestParam("ids") List<String> ids);
测试通过,方法没有问题,那就说明是远程调用的问题
json解析异常,这个方法没有json参数啊,难道远程调用是用json的格式传递的?在网上查了好多也没有解决方式。
java.util.ArrayList<org.jeecg.modules.face.entity.FaceDevice>
看到这一行,但API方法的返回值是List,于是我将API的返回值改为ArrayList
果然,不再报异常
/*** * 根据id集合查人脸设备face_device * @param ids * @return */ @GetMapping("/face/api/getDevicesByIds") ArrayList<FaceDevice> getDevicesByIds(@RequestParam("ids") List<String> ids);
虽然小编蒙对了,但具体是什么原因,小编也想不明白,有哪位聪明的同学能想明白的话,在评论里告诉我哦!