如何自定义SpringWebFlux WebClient JSON反序列化?

我正在使用spring-webflux WebClient (内部版本20170502.221452-172)访问Web应用程序,该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都可以正常工作,但我想知道要向Java反序列化添加任何自定义JSON时需要做什么(例如自定义的Jackson ObjectMapper)。

我无法在WebClient或其构建器和流利的API生成的对象的类中找到任何API 来做到这一点。

是否有人将WebClient与自定义反序列化一起使用?

回答:

这是一个自定义ObjectMapperJSON(反序列化)的示例。注意,出于流目的,使用了不同的编码器/解码器,但是其配置原理相同。

    ExchangeStrategies strategies = ExchangeStrategies

.builder()

.codecs(clientDefaultCodecsConfigurer -> {

clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(new ObjectMapper(), MediaType.APPLICATION_JSON));

clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(new ObjectMapper(), MediaType.APPLICATION_JSON));

}).build();

WebClient webClient = WebClient.builder().exchangeStrategies(strategies).build();

以上是 如何自定义SpringWebFlux WebClient JSON反序列化? 的全部内容, 来源链接: utcz.com/qa/430414.html

回到顶部