基于@JsonFormat的導(dǎo)包問(wèn)題
@JsonFormat導(dǎo)包問(wèn)題
@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")//注解可以以該格式注入格式 @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")//輸出格式 private Date birthday;//出生日期',
在后臺(tái)像前臺(tái)傳參數(shù)時(shí),日期沒(méi)有格式化,網(wǎng)上搜索了,輸出用@JsonFormat但是沒(méi)說(shuō)用哪個(gè)包
下面是我脫坑之路:
import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; <!-- JSON: jackson --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.12</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-lgpl</artifactId> <version>1.9.12</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.0</version> </dependency>
問(wèn)題補(bǔ)充:
我想要的是返回給前臺(tái)的時(shí)間已經(jīng)格式化,然而上面并沒(méi)有解決我的問(wèn)題于是:
方法如下:
單獨(dú)寫一個(gè)處理類繼承JsonSerializer
package com.szch.aspect; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.SerializerProvider; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; /** * 格式化Response時(shí)間格式 * 在springmvc返回json數(shù)據(jù)的時(shí)候默認(rèn)日期字段顯示的是long類型的時(shí)間戳 * 如果想要返回格式化的日期如:yyyy-MM-dd這種格式的需要進(jìn)行出現(xiàn) */ public class CustomDateSerializer extends JsonSerializer<Date> { public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsonGenerator.writeString(sdf.format(value)); } }
在實(shí)體類的屬性字段上添加@JsonSerialize注解
@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")//注解可以以該格式注入格式 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")//輸出格式 @JsonSerialize(using = CustomDateSerializer.class) private Date lastLogin;//最后登錄時(shí)間',
結(jié)果OK了,postman返回~
使用@JsonFormat注解踩過(guò)的坑
一、背景描述
項(xiàng)目技術(shù)棧:
Spring boot(2.1.6.RELEASE)+ JDK(1.8)+ Maven(apache-maven-3.5.4)+ Mybatis-plus(3.4.0)
最近在做一個(gè)項(xiàng)目系統(tǒng)時(shí),需要Java后端給前端頁(yè)面返回時(shí)間(要用本地時(shí)間--北京時(shí)間),后端時(shí)間字段映射,轉(zhuǎn)換,不管怎么處理都是按照北京時(shí)間來(lái)的,這個(gè)是正確的。但是只要一到前端顯示的時(shí)候,就會(huì)比北京時(shí)間少8個(gè)小時(shí)。
檢查各個(gè)可能出錯(cuò)的地方之后,感覺(jué)代碼寫的沒(méi)有問(wèn)題。但前端顯示還是少8個(gè)小時(shí),那肯定還是有問(wèn)題的,找吧。我的實(shí)體類如下:請(qǐng)注意被紅框圈住的 timezone = "GMT + 8"。后面會(huì)用到哦。
二、錯(cuò)誤原因
這也是我的一個(gè)習(xí)慣導(dǎo)致的,被紅框圈住的 timezone = "GMT + 8" 中間的加號(hào)兩邊各有一個(gè)有空格,然后序列化的時(shí)候沒(méi)有被識(shí)別這個(gè)時(shí)區(qū)。所以就導(dǎo)致傳給前端顯示的時(shí)候少了8個(gè)小時(shí),具體的可以看下圖所示。
三、解決方案
知道問(wèn)題的原因之后,改這個(gè)問(wèn)題就易如反掌了,把中間的空格刪除即可。如下圖所示。
再次測(cè)試,搞定。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解析Jmeter脫離Jenkins后Ant集成郵件通知問(wèn)題
今天來(lái)講下本地的ant構(gòu)建并發(fā)送郵件。配置下來(lái)挺順利也挺簡(jiǎn)單的,對(duì)Jmeter脫離Jenkins后Ant集成郵件通知問(wèn)題感興趣的朋友跟隨小編一起看看吧2021-12-12Java?DelayQueue實(shí)現(xiàn)任務(wù)延時(shí)示例講解
DelayQueue是一個(gè)無(wú)界的BlockingQueue的實(shí)現(xiàn)類,用于放置實(shí)現(xiàn)了Delayed接口的對(duì)象,其中的對(duì)象只能在其到期時(shí)才能從隊(duì)列中取走。本文就來(lái)利用DelayQueue實(shí)現(xiàn)延時(shí)任務(wù),感興趣的可以了解一下2022-09-09解決spring-boot 打成jar包后 啟動(dòng)時(shí)指定參數(shù)無(wú)效的問(wèn)題
這篇文章主要介紹了解決spring-boot 打成jar包后 啟動(dòng)時(shí)指定參數(shù)無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06tk.mybatis如何擴(kuò)展自己的通用mapper
這篇文章主要介紹了tk.mybatis如何擴(kuò)展自己的通用mapper操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06詳解Http請(qǐng)求中Content-Type講解以及在Spring MVC中的應(yīng)用
這篇文章主要介紹了Http請(qǐng)求中Content-Type講解以及在Spring MVC中的應(yīng)用的相關(guān)資料,需要的朋友可以參考下2017-02-02SpringBoot整合Mybatis與druid實(shí)現(xiàn)流程詳解
這篇文章主要介紹了springboot整合mybatis plus與druid詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的下伙伴可以參考一下2022-10-10java jackson 將對(duì)象轉(zhuǎn)json時(shí),忽略子對(duì)象的某個(gè)屬性操作
這篇文章主要介紹了java jackson 將對(duì)象轉(zhuǎn)json時(shí),忽略子對(duì)象的某個(gè)屬性操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10