網(wǎng)上雜七雜八的說法不一,大多數(shù)都是抄來抄去,沒有實(shí)踐,近期在項(xiàng)目頻繁遇到boot+jackson處理日期的問題,故開此貼。
成都創(chuàng)新互聯(lián)擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、德陽服務(wù)器托管解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球上1000家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
首先是POM
<?xml version="1.0" encoding="UTF-8"?>4.0.0 io.cj.learning boot2exam 0.0.1-SNAPSHOT jar boot2exam Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 2.0.0.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web RELEASE compile org.springframework.boot spring-boot-starter-web RELEASE compile org.springframework.boot spring-boot-maven-plugin
然后是yml文件
(當(dāng)然yml這東西很多人不喜歡,我也寫了個properties版本的)
spring: jackson: #參數(shù)意義: #JsonInclude.Include.ALWAYS 默認(rèn) #JsonInclude.Include.NON_DEFAULT 屬性為默認(rèn)值不序列化 #JsonInclude.Include.NON_EMPTY 屬性為 空(””) 或者為 NULL 都不序列化 #JsonInclude.Include.NON_NULL 屬性為NULL 不序列化 default-property-inclusion: ALWAYS time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss
上面配置對應(yīng)的properties文件版本:
#jackson相關(guān)配置 spring.jackson.date-format = yyyy-MM-dd HH:mm:ss #時區(qū)必須要設(shè)置 spring.jackson.time-zone= GMT+8 #ALWAYS的意思是即時屬性為null,仍然也會輸出這個key spring.jackson.default-property-inclusion=ALWAYS
然后來定義一個Controller和JAVA Bean
Controller:
package io.cj.learning.boot2exam.controller; import io.cj.learning.boot2exam.model.DateFormatTest; import org.springframework.web.bind.annotation.*; import java.text.SimpleDateFormat; import java.util.Date; @RestController @RequestMapping(value="/test") public class TestController { /** * 測試時間序列化, java.util.date 類型 -> String * @return */ @RequestMapping(value="/dateFormatTest", method = RequestMethod.GET) @ResponseBody public DateFormatTest dateFormatTest(){ DateFormatTest dateFormatTest = new DateFormatTest(); dateFormatTest.setIntProperties(100); dateFormatTest.setDateProperties(new Date()); return dateFormatTest; } /** * 測試時間反序列化 String -> java.util.date 類型 */ @RequestMapping(value="/dateFormatTest2" ,method = RequestMethod.POST) public void dateFormatTest2(@RequestBody DateFormatTest model){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(model.getIntProperties()); System.out.println(sdf.format(model.getDateProperties())); System.out.println(model.getStrProperties()); } }
Java Bean:
package io.cj.learning.boot2exam.model; import java.util.Date; /** * 一個model,里面帶一個日期類型 */ public class DateFormatTest { private Integer intProperties; private Date dateProperties; private String strProperties; public Integer getIntProperties() { return intProperties; } public void setIntProperties(Integer intProperties) { this.intProperties = intProperties; } public Date getDateProperties() { return dateProperties; } public void setDateProperties(Date dateProperties) { this.dateProperties = dateProperties; } public String getStrProperties() { return strProperties; } public void setStrProperties(String strProperties) { this.strProperties = strProperties; } }
啟動主類:
package io.cj.learning.boot2exam; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Boot2examApplication { public static void main(String[] args) { SpringApplication.run(Boot2examApplication.class, args); } }
測試:
試一下,首先是日期序列化, 請求一下試試
然后是反序列化,也請求一個試試:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。