Guide til @JsonFormat i Jackson

1. Oversikt

I denne artikkelen prøver vi å forstå hvordan du bruker @JsonFormat i Jackson. Det er en Jackson-merknad som brukes til å spesifisere hvordan formatere felt og / eller egenskaper for JSON-utdata.

Spesielt lar denne kommentaren deg spesifisere hvordan du skal formatere Dato og Kalender verdier i henhold til a SimpleDateFormat format.

2. Maven avhengighet

@JsonFormat er definert i jackson-databind-pakken, så vi trenger følgende Maven-avhengighet:

 com.fasterxml.jackson.core jackson-databind 2.11.1 

3. Komme i gang

3.1. Bruke standardformat

For å komme i gang vil vi demonstrere konseptene med å bruke @JsonFormat kommentar med en klasse som representerer en bruker.

Siden vi prøver å forklare detaljene i kommentaren, har Bruker objektet blir opprettet på forespørsel (og ikke lagret eller lastet fra en database) og seriellisert til JSON:

offentlig klasse bruker {privat streng fornavn; privat streng etternavn; private Date createdDate = new Date (); // standard konstruktør, settere og getters} 

Å bygge og kjøre dette kodeeksemplet returnerer følgende utdata:

{"firstName": "John", "lastName": "Smith", "createdDate": 1482047026009}

Som du kan se, er opprettet dato feltet vises som antall sekunder siden epoken, som er standardformatet som brukes til Dato Enger.

3.2. Bruke kommentaren på en Getter

La oss nå bruke @JsonFormat for å spesifisere formatet som opprettet dato feltet skal serieiseres. Her er brukerklassen oppdatert for denne endringen. De opprettet dato feltet er merket som vist for å spesifisere datoformatet.

Dataformatet som brukes til mønster argument er spesifisert av SimpleDateFormat:

@JsonFormat (form = JsonFormat.Shape.STRING, mønster = "[e-postbeskyttet]: mm: ss.SSSZ") privat Dato opprettet dato;

Med denne endringen på plass, bygger vi prosjektet igjen og kjører det. Resultatet er vist nedenfor:

{"firstName": "John", "lastName": "Smith", "createdDate": "[email protected]: 53: 34.740 + 0000"}

Som du kan se, er opprettet dato feltet er formatert ved hjelp av det angitte SimpleDateFormat format ved hjelp av @JsonFormat kommentar.

Ovennevnte eksempel viser bruk av merknaden på et felt. Den kan også brukes i en getter-metode (en eiendom) som følger.

For eksempel kan det hende du har en eiendom som beregnes ved påkallelse. Du kan bruke merknaden på getter-metoden i et slikt tilfelle. Merk at mønsteret også er endret for å returnere bare datoen for øyeblikket:

@JsonFormat (form = JsonFormat.Shape.STRING, mønster = "åååå-MM-dd") offentlig Dato getCurrentDate () {returner ny dato (); }

Den resulterende produksjonen er som følger:

{..., "currentDate": "2016-12-18", ...}

3.3. Spesifisere lokalitet

I tillegg til å spesifisere datoformatet, kan du også spesifisere lokaliteten som skal brukes til serialisering. Hvis du ikke spesifiserer denne parameteren, blir serialisering utført med standardinnstillingen:

@JsonFormat (form = JsonFormat.Shape.STRING, mønster = "[e-postbeskyttet]: mm: ss.SSSZ", locale = "en_GB") offentlig Dato getCurrentDate () {returner ny dato (); }

3.4. Spesifisere figuren

Ved hjelp av @JsonFormat med form satt til JsonFormat.Shape.NUMBER resulterer i standard utdata for Dato typer - som antall sekunder siden epoken. Parameteren mønster gjelder ikke denne saken og ignoreres:

@JsonFormat (form = JsonFormat.Shape.NUMBER) offentlig dato getDateNum () {returner ny dato (); }

Resultatet er som vist nedenfor:

{..., "dateNum": 1482054723876}

4. Konklusjon

For å konkludere, @JsonFormat brukes til å kontrollere utdataformatet til Dato og Kalender typer som vist ovenfor.

Eksempelkoden vist ovenfor er tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found