我通常在使用Jackson Library時使用mixins來執行自定義序列化和反序列化。 Spring Boot應用程序中的RestController的方法類似於下面列出的方法。我猜Spring Boot使用Jackson將VerifyAccountResponse序列化爲字符串。但是,當它們轉換爲字符串時,這會將我的日曆/日期對象轉換爲長整型值。我可以通過使用自定義序列化器將它們轉換爲適當的格式。不過,我不得不在序列化後將返回類型更改爲對象。有沒有辦法保留相同的簽名並將自定義序列化器添加到由Spring Boot執行的默認序列化中。Spring Boot - 自定義JSON序列化
@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有沒有什麼可以重寫?
你可以添加當前的序列化和慾望的例子嗎?您可以隨時註釋您的bean以使用自定義序列化,Spring-Boot將使用它。 – jbarrueta
@jbarrueta我的課程在一個jar文件中,我無法在它們上添加註釋。我正在使用Jackson mixins進行序列化 –
這可能會幫助您:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html#howto-customize-the- jackson-objectmapper – jbarrueta