I have a problem with Jackson in SpringBoot. My controller returns dates in format yyyy-MM-dd'T'HH:mm:ss'Z'
, but I need yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
(for mwl-calendar in angular which uses date-fns library).
Controller:
@GetMapping(value = "/slots", produces = MediaType.APPLICATION_JSON_VALUE)
public Set<SlotResponse> timeSlots() {
return slotService.getSlots();
}
SlotResponse:
@Data
public class SlotResponse {
private Instant start;
private Instant end;
}
Additional dependency:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
I tried:
- to use
@JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
annotation - to use
spring.jackson.date-format=yyyyMMddTHH:mm:ss.SSSZ
configuration - to create ObjectMapper manually:
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"));
return mapper;
}
- to enable options
SerializationFeature.WRITE_DATES_WITH_ZONE_ID
andSerializationFeature.WRITE_DATES_WITH_CONTEXT_TIME_ZONE
But all of this didn't take effect. Everytime I see this result:
[{"start":"2023-05-11T16:00:00Z","end":"2023-05-11T17:00:00Z"}]
I use Java 17, SpringBoot 2.7.0, Jackson 2.13.3
What is wrong?