【问题标题】:Deserializing a list of ints with Spring WebClient使用 Spring WebClient 反序列化整数列表
【发布时间】:2018-01-19 15:40:24
【问题描述】:

我正在尝试与返回简单 JSON 整数数组的 Rest 服务通信,例如

[1, 2, 3, 4]

我有以下代码通过 WebClient 拨打电话:

    client.get()
        .uri("/achievements")
        .retrieve()
        .bodyToFlux<Int>()
        .doOnNext { println(it) }
        .doOnError { it.printStackTrace() }
        .blockLast()

然而,Spring 给我一个空的 Flux。如果我用bodyToMono&lt;List&lt;Int&gt;&gt; 替换bodyToFlux 调用,那么Spring 能够按预期反序列化响应。缺点是我必须手动将其更改回 Flux 并带有冗余 flatMapIterable { it }

我是否遗漏了什么或者bodyToFluxbodyToMono 仅用于Jackson POJO?

【问题讨论】:

  • 您使用的是哪个版本的 Spring Framework?这可能与此问题有关:jira.spring.io/browse/SPR-16166
  • 谢谢!这个问题正是我的问题所在。我目前正在使用 5.0.2,因为那是稳定版本。我尝试使用 5.0.3 快照,但似乎还没有修复。如果您不介意添加您的评论作为答案,我可以标记它并关闭问题。
  • 这已在 12 月修复 - 如果它仍然不适合您,那么这是一个不同的问题。你能在jira.spring.io 上创建一个新问题吗?
  • 深入挖掘,我意识到我的问题略有不同。您链接的问题仅解决标量顶级值。我的问题是由标量数组引起的。我会做一个新的问题。
  • 创建了一个新工单和一个示例项目。 jira.spring.io/browse/SPR-16407

标签: java spring kotlin spring-webflux


【解决方案1】:

这是 Spring 的 WebClient 实现中的 bug

【讨论】:

    猜你喜欢
    • 2021-04-10
    • 2022-08-23
    • 2017-10-27
    • 2018-07-31
    • 2021-10-19
    • 2014-03-11
    • 1970-01-01
    • 2023-03-31
    • 2015-07-11
    相关资源
    最近更新 更多