为什么在 Feign 的自定义 decoder 中使用 ObjectMapper 的方法会 fallback?

2020-10-30 13:52:34 +08:00
 InkAndBanner

原因:调用数个外部 api,api 的返回值的 data 字段会根据接口不同而不同,如果订单接口 那个数组就叫 orders,如果商品列表接口 就叫 spus,我想用一个自定义的反序列化规则把他们都放在统一的 response 对象的 data 字段中(泛型)
如图:

https://sm.ms/image/tLa159rNIPw2FmC

但是每次 feignClient 去请求接口 收到 json 开始反序列化时候 每次走到断点那行 执行 objectMapper 的 readValue 的时候就会直接 feignFallBack 没有什么异常的信息打印出来 很奇怪 从昨天开始困扰了一整天了,代码如图 1.为什么会这样?是不该使用 readValue 吗? 2.有什么更好实现得方法吗? 熟悉 feign 的大神快来救命

https://sm.ms/image/nwVK4ygImXjzMse

874 次点击
所在节点    问与答
5 条回复
aragakiyuii
2020-10-30 15:40:38 +08:00
readValue(content, MicroShopOrder[].class)

然后把数组返回值转成 list
InkAndBanner
2020-10-30 15:49:49 +08:00
@aragakiyuii 感谢老哥 但是我试了 不是这个问题 还是会 fallback https://sm.ms/image/lLE7coQqnKweJyt
passerbytiny
2020-10-30 15:57:20 +08:00
你可能需要 JsonNode.asText

toString 得出来的是 JsonNode 实例对应的 json,不是它携带的值对应的 json,无法读取为 List 类型。

还有,为什么不看一下抛出来的异常的信息。
passerbytiny
2020-10-30 16:01:54 +08:00
把日志里面的 Error 看完,里面应该有源头的异常信息。

你这个日志是处理过的,也有可能没包含完整信息,但是你都能调试了,在异常导致的断点那里也是能看到异常信息的。
aragakiyuii
2020-10-30 16:07:18 +08:00
@InkAndBanner #2 不如直接 debug 的时候 Evaluate 一下那行,看看 exception 日志

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/720152

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX