मुझे एक और समाधान मिला, जिसे आप जो चाहें प्रारूप में परिवर्तित कर सकते हैं और सभी LocalDateTime डेटाटाइप पर लागू कर सकते हैं और आपको प्रत्येक LocalDateTime डेटाटाइप के ऊपर @JsonFormat निर्दिष्ट करने की आवश्यकता नहीं है। पहले निर्भरता जोड़ें:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
निम्नलिखित सेम जोड़ें:
@Configuration
public class Java8DateTimeConfiguration {
/**
* Customizing
* http://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html
*
* Defining a @Bean of type Jackson2ObjectMapperBuilder will allow you to customize both default ObjectMapper and XmlMapper (used in MappingJackson2HttpMessageConverter and MappingJackson2XmlHttpMessageConverter respectively).
*/
@Bean
public Module jsonMapperJava8DateTimeModule() {
val bean = new SimpleModule();
bean.addDeserializer (ZonedDateTime.class, new JsonDeserializer<ZonedDateTime>() {
@Override
public ZonedDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
return ZonedDateTime.parse(jsonParser.getValueAsString(), DateTimeFormatter.ISO_ZONED_DATE_TIME);
}
});
bean.addDeserializer(LocalDateTime.class, new JsonDeserializer<LocalDateTime>() {
@Override
public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
return LocalDateTime.parse(jsonParser.getValueAsString(), DateTimeFormatter.ISO_LOCAL_DATE_TIME);
}
});
bean.addSerializer(ZonedDateTime.class, new JsonSerializer<ZonedDateTime>() {
@Override
public void serialize(
ZonedDateTime zonedDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
throws IOException {
jsonGenerator.writeString(DateTimeFormatter.ISO_ZONED_DATE_TIME.format(zonedDateTime));
}
});
bean.addSerializer(LocalDateTime.class, new JsonSerializer<LocalDateTime>() {
@Override
public void serialize(
LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
throws IOException {
jsonGenerator.writeString(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(localDateTime));
}
});
return bean;
}
}
अपने विन्यास फाइल में निम्नलिखित जोड़ें:
@Import(Java8DateTimeConfiguration.class)
यह सभी प्रॉपर्टीज LocalDateTime और ZonedDateTime को तब तक सीरियल और डी-सीरियल करेगा, जब तक कि आप स्प्रिंग द्वारा बनाई गई ऑब्जेक्टमैपर का उपयोग कर रहे हैं।
ज़ोनडेडटाइम के लिए आपको जो प्रारूप मिला है वह है: "2017-12-27T08: 55: 17.317 + 02: 00 [एशिया / यरुशलम]" के लिए LocalDateTime है: "2017-12-27T09: 05: 30.523"
@JsonSerialize(using = LocalDateTimeSerializer.class)
...