【发布时间】:2017-01-30 07:56:15
【问题描述】:
在使用 Jackson 库时,我通常使用 mixins 来执行自定义序列化和反序列化。我在 Spring Boot 应用程序中的 RestController 具有类似于下面列出的方法。我猜 Spring Boot 使用 Jackson 将 VerifyAccountResponse 序列化为字符串。但是,当它们转换为字符串时,这会将我的日历/日期对象转换为长值。我可以使用自定义序列化程序将它们转换为适当的格式。但是,我必须在序列化后将返回类型更改为对象。有没有办法保留相同的签名并将自定义序列化程序添加到 Spring Boot 执行的默认序列化中。
@RequestMapping(value ="verifyAccount", method = RequestMethod.POST, produces=MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<VerifyAccountResponse> verifyAccount(@RequestBody VerifyAccountRequest request) {
VerifyAccountResponse response = service.verifyAccount(request);
return new ResponseEntity<VerifyAccountResponse>(response, HttpStatus.OK);
}
编辑:
Updated the below based on the answers , but mixin doesn't seem to take effect -
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.mixIn(ConnectStatus.class, com.datacast.service.util.DateFormatSerializerMixin.class);
return builder;
}
编辑 2:
我创建了一个简单的 Spring Boot 项目来测试它,它工作正常。但是当我在我的大型项目中使用这种方法时,日期转换并没有发生。有什么东西可以覆盖 Jackson2ObjectMapperBuilder 吗?
【问题讨论】:
-
你能添加一个当前序列化和欲望的例子吗?您始终可以注释您的 bean 以使用自定义序列化,Spring-Boot 将使用它。
-
@jbarrueta 我的类在一个 jar 文件中,我无法在它们上添加注释。我正在使用 Jackson mixins 进行序列化
-
@PunterVicky - 默认序列化是通过杰克逊的泽西岛,所以任何通过杰克逊的泽西岛都是适用的并且完全相同。 答案只是指向文档的链接您还没有阅读自己,并且仅链接答案,对链接所代表的内容进行了一些最低限度的解释,因此质量非常低。
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码.没有明确问题陈述的问题对其他读者没有用处。 See: How to create a Minimal, Complete, and Verifiable example.
标签: java spring spring-mvc spring-boot jackson