java Sping Boot -自定义JSON序列化[重复]

mtb9vblg  于 2023-02-14  发布在  Java
关注(0)|答案(2)|浏览(140)

此问题在此处已有答案

Jackson custom date serializer(1个答案)
六年前关闭了。
在使用JacksonLibrary时,我通常使用mixin来执行自定义序列化和反序列化。我在Sping Boot 应用程序中的RestController具有与下面列出的方法类似的方法。我猜Spring Boot使用Jackson将VerifyAccountResponse序列化为字符串。然而,当我的日历/日期对象转换为字符串时,这会将它们转换为长值。我能够使用自定义序列化器将它们转换为适当的格式。然而,我必须在序列化之后将返回类型更改为对象。是否有办法保留相同的签名并将自定义序列化程序添加到Sping 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:
我创建了一个简单的 Boot 项目来测试它,它运行良好。但是当我在我的更大的项目中使用这种方法时,日期转换没有发生。是否有什么东西覆盖了Jackson 2 ObjectMapperBuilder?

l2osamch

l2osamch1#

你可以用很多方法在spring Boot 应用程序中定制Jackson序列化器。请考虑查看spring boot参考指南中关于jackson的文档。
您可以使用Jackson2ObjectMapperBuilder配置自定义序列化程序。
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.html#serializerByType-java.lang.Class-com.fasterxml.jackson.databind.JsonSerializer-

ljsrvy3e

ljsrvy3e2#

您可以通过设置属性来自定义日期格式(据我所知,这是您发帖的主要原因

spring.jackson.date-format= 
# Date format string or a fully-qualified date format class name.
For instance `yyyy-MM-dd HH:mm:ss`.

相关问题