关于feignClient的返回类型R<String>错误

Blade 未结 1 14

重现步骤:

  1. 服务端返回R.data(null);

  2. 客户端R<String> data = feignClient.getData(); 接收异常;

feign.codec.DecodeException: Error while extracting response for type [org.springblade.core.tool.api.R<java.lang.String>] and content type [application/json;charset=UTF-8]

at feign.InvocationContext.decode(InvocationContext.java:125)

at feign.InvocationContext.proceed(InvocationContext.java:94)

at feign.ResponseHandler.handleResponse(ResponseHandler.java:69)

at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:109)

at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:53)

at org.springblade.core.cloud.sentinel.BladeSentinelInvocationHandler.invoke(BladeSentinelInvocationHandler.java:113)


 若服务端返回R.data(""); 客户端是没有问题的。 不知道是升级到最新版本的问题,还是原来就是这样的。

当前BladeX版本: 4.10.1

1条回答
  • 应该一直是这样的,null会触发jackson的空值自动序列化,比如不走feign,走controller的话, data(null) 会被序列化为

    {"code":200,"success":true,"data":{},"msg":"暂无承载数据"}

    ,而 {} 按照string再次反序列化就会报错。


    后面我们空了来想想这个怎么自动适配比较好一点。


    0 讨论(0)
提交回复