bodyToMono 和 READ_UNKNOWN_ENUM_VALUES_AS_NULL 问题

Issue with bodyToMono and READ_UNKNOWN_ENUM_VALUES_AS_NULL

我有下面的代码

@Data
public class Test {
   private String name;
   private Type type;

   public enum Type {
       A("a"), B("b");

       private final String value;

       Type(String value) {
           this.value = value;
       }

       @JsonValue
       public String getValue() {
           return value;
       }
   }
}

        webClient
            .get()
            .uri(url)
            .exchangeToMono(response -> response.bodyToMono(Test.class))
            .map(test -> {

            });

这里是 application.yml

中的配置
spring:
  jackson:
    deserialization:
      READ_UNKNOWN_ENUM_VALUES_AS_NULL: true

这是 webClient 调用的测试响应

{"name": "test", "type": "c"}

我希望 test{"name": "test"},因为 READ_UNKNOWN_ENUM_VALUES_AS_NULL 应该忽略未知的枚举值 "type": "c",但实际上我得到了 Mono.empty()

知道如何让 READ_UNKNOWN_ENUM_VALUES_AS_NULLbodyToMono

一起工作吗

您需要配置 WebClient 编解码器以使用默认 Spring-managed Jackson ObjectMapper。这是一个例子

WebClient webClient = WebClient.builder()
        .codecs(configurer -> {
            configurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON));
            configurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON));
        })
        .build();