Guide til @JsonFormat i Jackson
1. Oversigt
I denne artikel forsøger vi at forstå, hvordan man bruger @JsonFormat i Jackson. Det er en Jackson-kommentar, der bruges til at specificere, hvordan felter og / eller egenskaber til JSON-output skal formateres.
Specifikt giver denne kommentar dig mulighed for at specificere, hvordan du formaterer Dato og Kalender værdier i henhold til a SimpleDateFormat format.
2. Maven-afhængighed
@JsonFormat er defineret i jackson-databind-pakken, så vi har brug for følgende Maven-afhængighed:
com.fasterxml.jackson.core jackson-databind 2.11.1
3. Kom godt i gang
3.1. Brug af standardformatet
For at komme i gang vil vi demonstrere begreberne med at bruge @JsonFormat kommentar med en klasse, der repræsenterer en bruger.
Da vi forsøger at forklare detaljerne i kommentaren, er Bruger objekt oprettes efter anmodning (og ikke gemmes eller indlæses fra en database) og serialiseres til JSON:
offentlig klasse bruger {privat streng fornavn; privat streng efternavn; privat dato createdDate = ny dato (); // standard konstruktør, settere og getters}
Bygning og kørsel af dette kodeeksempel returnerer følgende output:
{"firstName": "John", "lastName": "Smith", "createdDate": 1482047026009}
Som du kan se, er createdDate felt vises som antallet af sekunder siden epoke, som er det standardformat, der bruges til Dato felter.
3.2. Brug af kommentaren på en Getter
Lad os nu bruge @JsonFormat for at specificere det format, som createdDate felt skal serieliseres. Her er brugerklassen opdateret til denne ændring. Det createdDate felt er kommenteret som vist for at specificere datoformatet.
Dataformatet, der bruges til mønster argument er specificeret af SimpleDateFormat:
@JsonFormat (form = JsonFormat.Shape.STRING, mønster = "[e-mailbeskyttet]: mm: ss.SSSZ") privat Dato oprettet Dato;
Med denne ændring på plads bygger vi projektet igen og kører det. Outputtet er vist nedenfor:
{"firstName": "John", "lastName": "Smith", "createdDate": "[email protected]: 53: 34.740 + 0000"}
Som du kan se, er createdDate felt er formateret ved hjælp af det angivne SimpleDateFormat format ved hjælp af @JsonFormat kommentar.
Ovenstående eksempel viser brugen af kommentaren på et felt. Det kan også bruges i en getter-metode (en egenskab) som følger.
For eksempel har du muligvis en ejendom, der beregnes ved indkaldelse. Du kan bruge kommentaren på getter-metoden i et sådant tilfælde. Bemærk, at mønsteret også er blevet ændret for kun at returnere datodelen af øjeblikket:
@JsonFormat (form = JsonFormat.Shape.STRING, mønster = "åååå-MM-dd") offentlig Dato getCurrentDate () {returner ny dato (); }
Det resulterende output er som følger:
{..., "currentDate": "2016-12-18", ...}
3.3. Angivelse af lokalitet
Ud over at specificere datoformatet kan du også specificere det landestandard, der skal bruges til serialisering. Ikke at specificere denne parameter resulterer i, at serialisering udføres med standard locale:
@JsonFormat (form = JsonFormat.Shape.STRING, mønster = "[e-mailbeskyttet]: mm: ss.SSSZ", locale = "da_DK") offentlig Dato getCurrentDate () {returner ny dato (); }
3.4. Specificering af figuren
Ved brug af @JsonFormat med form indstillet til JsonFormat.Shape.NUMBER resulterer i standardoutput for Dato typer - som antallet af sekunder siden epoken. Parameteren mønster finder ikke anvendelse i denne sag og ignoreres:
@JsonFormat (form = JsonFormat.Shape.NUMBER) offentlig Dato getDateNum () {returner ny dato (); }
Outputtet er som vist nedenfor:
{..., "dateNum": 1482054723876}
4. Konklusion
Afslutningsvis, @JsonFormat bruges til at kontrollere outputformatet af Dato og Kalender typer som vist ovenfor.
Eksempelkoden vist ovenfor er tilgængelig på GitHub.