java 在将RestTemplate.exchange()与Jackson一起使用时,是否有一种方法可以选择要序列化和非序列化的字段?

jbose2ul  于 2023-11-15  发布在  Java
关注(0)|答案(1)|浏览(112)

我是Sping Boot 的新手,现在正在编写一个使用一些restful API的应用程序。然而,API在不同的HTTP请求中接受不同的字段。现在我已经使用了resttemplate的exchange()方法(HttpMethod.GET)将其转换为POJO用户。但是,在更新时,(HttpMethod.PUT),不同的类属性需要被序列化。(HttpMethod.POST),需要另一组不同的字段。我已经尝试使用Jackson的注解来忽略一些字段,但它们是静态的。我需要一种方法来决定哪些字段根据我使用的HTTP方法进行序列化和非序列化?

rryofs0p

rryofs0p1#

Jackson本身就有一个@JsonView的概念。你可以用这个注解来标记字段,当(反)序列化时,你可以告诉它只处理特定视图的字段,例如ObjectMapper#writerWithView()
虽然SpringMVC does support JsonViews,我不认为RestTemplate做。即使它做了,它可能只是创建两个不同的类,要么相互扩展,要么更好地使用组合与@JsonUnwrapped。严重依赖视图可能会导致更复杂/脏的类。

相关问题