在 Jackson 中使用 RestTemplate.exchange() 时,有没有办法选择要序列化和反序列化的字段?

问题描述 投票:0回答:1

我是 Spring Boot 的新手,现在正在编写一个使用一些 Restful API 的应用程序。 但是,API 接受不同 HTTP 请求中的不同字段。 现在我已经使用resttemplate的exchange()方法(HttpMethod.GET)将其反序列化为POJO用户。但是,在更新(HttpMethod.PUT)时,需要序列化不同的类属性。同时,在创建(HttpMethod.POST)时,需要不同字段的原集。 我尝试使用杰克逊的注释来忽略某些字段,但它们是静态的。我需要一种方法来根据我使用的 HTTP 方法来决定哪些字段要序列化和反序列化?

java spring-boot rest jackson resttemplate
1个回答
0
投票

Jackson 本身有一个 @JsonView 的概念。您可以使用该注释标记字段,并且在(反)序列化时,您可以告诉它仅适用于特定视图的字段,例如

ObjectMapper#writerWithView()

虽然 SpringMVC 确实支持 JsonViews,但我认为 RestTemplate 不支持。即使确实如此,只创建 2 个不同的类并相互扩展或更好 - 将组合与 @JsonUnwrapped 一起使用可能会更干净。严重依赖视图可能会导致更复杂/肮脏的类。

© www.soinside.com 2019 - 2024. All rights reserved.