寫(xiě)在前面
在寫(xiě)web項(xiàng)目的時(shí)候經(jīng)常會(huì)遇到后端返回的MySQL日期數(shù)據(jù)(date)
類(lèi)型在前端顯示不正確的情況,有的時(shí)候會(huì)出現(xiàn)一串?dāng)?shù)字的時(shí)間戳,有的時(shí)候顯示為日期晚了一天。
這是因Json給前端返回?cái)?shù)據(jù)的時(shí)候格式問(wèn)題造成的
解決方法
其實(shí)總結(jié)起來(lái)就是一句話在Model部分對(duì)于JavaBean定義參數(shù)類(lèi)型的時(shí)候,規(guī)定日期格式
Tips:
注意區(qū)分Jackson和FastJson以及其他的Json格式類(lèi)型
Jackson類(lèi)型的Json
注意區(qū)分Jackson和FastJson以及其他的Json格式類(lèi)型,不同Json注解不同
如何在向前端返回?cái)?shù)據(jù)的時(shí)候直接使用return 某一個(gè)對(duì)象
那一般都會(huì)以Jackson的Json類(lèi)型來(lái)向前端返回,例如:
@GetMapping("getNews")
public List<News> getNews(int num) {
List<News> news_list = projectService.getNews(num);
return news_list;
}
那么對(duì)于這種情況,我們?cè)贜ews類(lèi)中,就要在時(shí)間類(lèi)型的變量上加上注解
這里Timestamp類(lèi)型對(duì)應(yīng)的是Mysql中的datetime類(lèi)型(精確到時(shí)分秒),同時(shí)注解中加上時(shí)區(qū),解決可能的日期差一天的問(wèn)題。
Date類(lèi)型對(duì)應(yīng)Mysql中的date類(lèi)型(精確到天),同時(shí)注解中加上時(shí)區(qū),解決可能的日期差一天的問(wèn)題。
//Timestamp舉例,對(duì)應(yīng)Mysql中的datetime
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="Asia/Shanghai")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp time;
//Date,對(duì)應(yīng)Mysql中的date
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private Date date;
FastJson類(lèi)型的Json
注意區(qū)分Jackson和FastJson以及其他的Json格式類(lèi)型,不同Json注解不同
在這個(gè)示例中,后端給前端返回的數(shù)據(jù)是先轉(zhuǎn)為fastjson,再return的,那就不能使用jackson的注解格式,而要使用fastjson提供的注解。fastjson一般不會(huì)有時(shí)區(qū)導(dǎo)致的日期錯(cuò)誤問(wèn)題
@GetMapping("getNewsTopWord")
public String getNewsTopWord(int num) {
String jsonOutput = JSON.toJSONString(projectService.getNewsTopWord(num));
return jsonOutput;
}
同樣,在時(shí)間類(lèi)型的變量上加上注解
這里Timestamp類(lèi)型對(duì)應(yīng)的是Mysql中的datetime類(lèi)型(精確到時(shí)分秒)。
Date類(lèi)型對(duì)應(yīng)Mysql中的date類(lèi)型(精確到天)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-777325.html
//Timestamp舉例,對(duì)應(yīng)Mysql中的datetime
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp time;
//Date,對(duì)應(yīng)Mysql中的date
@JSONField(format = "yyyy-MM-dd")
private Date date;
總結(jié)
注意區(qū)分Jackson和FastJson以及其他的Json格式類(lèi)型,不同Json注解不同文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-777325.html
到了這里,關(guān)于Java后端返回的MySQL日期數(shù)據(jù)在前端格式錯(cuò)誤的解決方法,區(qū)分jackson和fastjson的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!