异常信息以下:java
JSON parse error:
Can not deserialize instance of java.lang.String out of START_OBJECT token;
nested exception is com.fasterxml.jackson.databind.JsonMappingException:
Can not deserialize instance of java.lang.String out of START_OBJECT token
at [Source: java.io.PushbackInputStream@7d1ef454; line: 1, column: 39]
(through reference chain: com.chehejia.aisp.core.result.Result["data"])
我本身的服务去调用别人的服务的时候出现的异常,意思是JSON解析失败,用String类型没法序列化Json对象,先看代码:app
三方服务:spa
@ApiOperation("下订单") @PostMapping("/orders") @ApiResponses({ @ApiResponse(code = MusicCode.MUSIC_VIP_PRODUCT_NOT_EXIST_CODE, message = MusicCode.MUSIC_VIP_PRODUCT_NOT_EXIST_DESC), @ApiResponse(code = MusicCode.MUSIC_VIP_ORDER_CODE_IS_REPEAT_CODE, message = MusicCode.MUSIC_VIP_ORDER_CODE_IS_REPEAT_DESC)} ) public Result<String> addOrders(@Valid @RequestBody OrderForm form) { VipProduct vipProduct = vipService.getVipProductByProdCode(form.getProdCode()); if(vipProduct==null){ return Results.failure(MusicCode.MUSIC_VIP_PRODUCT_NOT_EXIST); }
个人代码:code
/**
* @Author: 保密哈哈
* @Description:
* @Date: 2019/6/4 15:40
* @Modified By:
*/
@FeignClient("保密-保密-hmi")
public interface CompensationOrderService {
/** * 音乐服务下单 * @param form * @return */ @PostMapping(value = "/保密/保密/保密/orders") @ResponseBody Result<String> addOrders(@Valid @RequestBody OrderForm form, @RequestHeader(value = "保密-Token")String token, @RequestHeader(value = "X-保密-Deviceid")String deviceid);
由于我是经过Fegin调用另外一方服务,由于另外一个服务调用的接口的返回参数是 Result<String>,因此,我保持了个人接收参数是 Result<String>, 我天真的认为只要彻底保持一致就能够,其实是不行的,传过来的是个Json,因此String是没法解析的,除非是JSon形式的字符串,可行的方法是先用超类Object看看可否接收,而且接收到的是什么参数,而后再解析。orm