V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
InkAndBanner
V2EX  ›  问与答

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

  •  
  •   InkAndBanner · 2020-10-30 13:52:34 +08:00 · 955 次点击
    这是一个创建于 1503 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原因:调用数个外部 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

    5 条回复    2020-10-30 16:07:18 +08:00
    aragakiyuii
        1
    aragakiyuii  
       2020-10-30 15:40:38 +08:00 via iPhone
    readValue(content, MicroShopOrder[].class)

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

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

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

    你这个日志是处理过的,也有可能没包含完整信息,但是你都能调试了,在异常导致的断点那里也是能看到异常信息的。
    aragakiyuii
        5
    aragakiyuii  
       2020-10-30 16:07:18 +08:00
    @InkAndBanner #2 不如直接 debug 的时候 Evaluate 一下那行,看看 exception 日志
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4690 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:48 · PVG 11:48 · LAX 19:48 · JFK 22:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.