Pun*_*cky 5 java spring spring-mvc jackson spring-boot
我通常使用mixins在使用Jackson Library时执行自定义序列化和反序列化.Spring Boot应用程序中的My 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);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
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;
}
Run Code Online (Sandbox Code Playgroud)
编辑2:
我创建了一个简单的弹簧启动项目来测试它,这很好.但是当我在我的大项目中使用这种方法时,日期转换不会发生.有没有什么可以覆盖Jackson2ObjectMapperBuilder?
您可以通过多种方式在Spring启动应用程序中自定义Jackson序列化程序.请考虑在弹簧启动参考指南中查看有关jackson的文档:
您可以使用Jackson2ObjectMapperBuilder配置自定义序列化程序.
您可以通过设置属性来自定义日期格式(据我所知,这是发布帖子的主要原因)
spring.jackson.date-format=
# Date format string or a fully-qualified date format class name.
For instance `yyyy-MM-dd HH:mm:ss`.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31214 次 |
| 最近记录: |