我正在使用 spring-webflux WebClient (build 20170502.221452-172)来访问一个 Web 应用程序,该应用程序生成一个 Entry 对象流(application/stream+json),如下所示:
final WebClient producerClient = WebClient.create("http://localhost:8080/");
Flux<Entry> entries = producerClient.get().uri("json-stream")
.accept(MediaType.APPLICATION_STREAM_JSON)
.exchange()
.flatMapMany(clientResponse -> clientResponse.bodyToFlux(Entry.class));
虽然 Entry 对象的反序列化对于使用标准通用类型(包括 Java 时间 (JSR-310) 数据类型,如 java.time.Instant)的 POJO 工作正常,但我想知道我需要做什么才能将任何自定义 JSON 添加到 Java 反序列化(例如,自定义 Jackson ObjectMapper)。
我在 WebClient 或其构建器和流畅的 API 生成的对象类中找不到任何 API 来执行此操作。
有人使用过自定义反序列化的 WebClient 吗?
(也许 API 还不存在?)
原文由 Martin 发布,翻译遵循 CC BY-SA 4.0 许可协议
下面是一个自定义
ObjectMapper
用于 JSON(反)序列化的示例。请注意,出于流式传输的目的,使用了不同的编码器/解码器,但它们的配置原理保持不变。