当前位置: 移动技术网 > IT编程>开发语言>Java > JSON parse error: Can not deserialize instance of java.lang.String out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.JsonM

JSON parse error: Can not deserialize instance of java.lang.String out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.JsonM

2019年06月20日  | 移动技术网IT编程  | 我要评论

异常信息如下:

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对象,先看代码:

  

三方服务:

    @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);
        }

 

 

我的代码:


/**
* @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看看能否接收,并且接收到的是什么参数,然后再解析。

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网