如何在Java Spring中处理可选的和额外的json参数?



因此,当提供Java Spring Boot内置的JSON/HTTP API时,并尝试读取JSON对象post到我的服务中,我使用@RequestBody读取此输入并将其自动解析为可用的Java对象。

然而,我正试图弄清楚如何最好地保持接口不受微服务之间接口随时间变化的影响。

  1. 如何处理请求者在请求JSON有效负载中提供的可选和额外(未使用)参数的情况?也许这是一个我曾经需要但现在不再需要的字段,但是请求者还没有更新。在弱类型语言中,这些往往会被忽略。但我不确定这在Java中是如何工作的

  2. 作为使用WebClient的请求者,我如何处理我调用的服务返回我不需要的额外字段,但也没有期望的情况?

如果你想忽略JSON中从应用程序的角度来看未知的属性,你可以使用类声明上面的注释@JsonIgnoreProperties(ignoreUnknown = true),例如

@JsonIgnoreProperties(ignoreUnknown = true)
public class MyDto{}

这将同时适用于WebClient和服务器。

你甚至可以设置json配置忽略null或空字段,如下:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);

最新更新