您好,登錄后才能下訂單哦!
這篇文章的內(nèi)容主要圍繞SpringBoot jackson提供對LocalDate的支持方式是什么進行講述,文章內(nèi)容清晰易懂,條理清晰,非常適合新手學(xué)習(xí),值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!
SpringBoot默認使用jackson來進行json格式轉(zhuǎn)換,我們在配置文件中加入如下配置可以統(tǒng)一的改變Spring MVC返回值的日期格式類型
spring.jackson.date-format=yyyy-MM-dd spring.jackson.time-zone=GMT+8 spring.jackson.serialization.write-dates-as-timestamps=false
但是這個配置對于java8新提供的日期APILocalDate、LocalDateTime等無效。
引入依賴
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.8.9</version> </dependency>
啟動主類添加如下代碼
@SpringBootApplication public class GroupApplication { public static void main(String[] args) { SpringApplication.run(GroupApplication.class, args); } /** * 提供jackson對LocalDate等java8提供的日期的序列化支持 */ @Bean(name = "mapperObject") public ObjectMapper getObjectMapper() { ObjectMapper om = new ObjectMapper(); JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss"))); om.registerModule(javaTimeModule); return om; } }
LocalDate可以很方便的對日期進行處理,但是在返回給前端時,展示為如下的JSON結(jié)構(gòu):
{ "dayOfWeek": "FRIDAY", "month": "JANUARY", "year": 2020, "dayOfMonth": 3, "era": "CE", "dayOfYear": 3, "monthValue": 1, "chronology": { "calendarType": "iso8601", "id": "ISO" } }
前端組件就很難處理了。接下來,我們需要將此屬性反序列化并從JSON字符串序列化。為此,我們可以使用@JsonDeserialize和@JsonSerialize來注釋該類的LocalDate屬性,時期成為前端組件需要的String格式。
下面是LocalDateSerializerand LocalDateDeserializer類的定義。
public class LocalDateDeserializer extends StdDeserializer<LocalDate> { protected LocalDateDeserializer() { super(LocalDate.class); } @Override public LocalDate deserialize(JsonParser parser, DeserializationContext context) throws IOException { return LocalDate.parse(parser.readValueAs(String.class)); } }
public class LocalDateSerializer extends StdSerializer<LocalDate> { public LocalDateSerializer() { super(LocalDate.class); } @Override public void serialize(LocalDate value, JsonGenerator generator, SerializerProvider provider) throws IOException { generator.writeString(value.format(DateTimeFormatter.ISO_LOCAL_DATE)); } }
實體類添加如下的注解
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonSerialize(using = LocalDateSerializer.class) private LocalDate date;
感謝你的閱讀,相信你對“SpringBoot jackson提供對LocalDate的支持方式是什么”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關(guān)知識點,可以關(guān)注億速云網(wǎng)站!小編會繼續(xù)為大家?guī)砀玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。