我在 Java Spring Boot 框架上,尝试使用 Mono 序列化 Java 对象以供 WebClient 用于发送。 我想知道当找到该值时是否可以完全删除该字段
null
。 我似乎没有找到办法做到这一点。试图找到一个注释来看看这是否有效。
下面是一个例子。
我有一个 Java 类,其对象如下所示
public class RequestBody {
private String name_first;
private String name_last;
private String email_address;
}
使用构建器模式来构建它。
RequestBody requestBody =
RequestBody.builder()
.name_first(input.getName().getFirst())
.name_last(input.getName().getLast())
.build();
使用 WebClient + Mono 向另一个 API 进行 RESTful POST
return requestBodySpec
.header("Content-Type", "application/json")
.body(Mono.just(requestBody), RequestBodyClass)
.retrieve()
.bodyToMono(String.class)
.block();
Mono 序列化后的 JSON 结果如下所示。
{
"name_first": "Foo",
"name_last": "Bar",
"email_address": null
}
期望请求 JSON 如下所示。当值为 null 时,
email_address
会被完全删除。我们该怎么做?
{
"name_first": "Foo",
"name_last": "Bar"
}
感谢 AI,答案是:创建一个 Weblux 配置类:
@Configuration
@EnableWebFlux
public class WebFluxConfig implements WebFluxConfigurer {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper;
}
@Bean
public Encoder<Object> encoder(ObjectMapper objectMapper) {
return new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON);
}
}