InkAndBanner
V2EX  ›  问与答

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

  •  
  •   InkAndBanner · Oct 30, 2020 · 1287 views
    This topic created in 2021 days ago, the information mentioned may be changed or developed.

    原因:调用数个外部 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 replies    2020-10-30 16:07:18 +08:00
    aragakiyuii
        1
    aragakiyuii  
       Oct 30, 2020 via iPhone
    readValue(content, MicroShopOrder[].class)

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

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

    还有,为什么不看一下抛出来的异常的信息。
    passerbytiny
        4
    passerbytiny  
       Oct 30, 2020 via Android
    把日志里面的 Error 看完,里面应该有源头的异常信息。

    你这个日志是处理过的,也有可能没包含完整信息,但是你都能调试了,在异常导致的断点那里也是能看到异常信息的。
    aragakiyuii
        5
    aragakiyuii  
       Oct 30, 2020
    @InkAndBanner #2 不如直接 debug 的时候 Evaluate 一下那行,看看 exception 日志
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5846 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 01:57 · PVG 09:57 · LAX 18:57 · JFK 21:57
    ♥ Do have faith in what you're doing.