JSON parse error: Can not deserialize instance of java.lang.String out of START_OBJECT token; nes...

異常信息以下: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

相關文章
相關標籤/搜索