如何自定义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与自定义反序列化一起使用?
回答:
这是一个自定义ObjectMapper
JSON(反序列化)的示例。注意,出于流目的,使用了不同的编码器/解码器,但是其配置原理相同。
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