编程语言
首页 > 编程语言> > java – Spring Boot – 自定义JSON序列化[复制]

java – Spring Boot – 自定义JSON序列化[复制]

作者:互联网

参见英文答案 > Jackson custom date serializer                                    1个
我通常使用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);
}

编辑:

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:

我创建了一个简单的弹簧启动项目来测试它,这很好.但是当我在我的大项目中使用这种方法时,日期转换不会发生.有没有什么可以覆盖Jackson2ObjectMapperBuilder?

解决方法:

您可以通过多种方式在Spring启动应用程序中自定义Jackson序列化程序.请考虑在弹簧启动参考指南中查看有关jackson的文档:

https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/howto.html#howto-customize-the-jackson-objectmapper

您可以使用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-

标签:java,spring-mvc,spring,jackson,spring-boot-2
来源: https://codeday.me/bug/20190717/1487682.html