Sprievodca po @JsonFormat v Jackson

1. Prehľad

V tomto článku sa snažíme pochopiť, ako používať @JsonFormat v Jackson. Jedná sa o Jacksonovu anotáciu, ktorá sa používa na špecifikáciu spôsobu formátovania polí alebo vlastností pre výstup JSON.

Táto anotácia vám konkrétne umožňuje určiť, ako sa má formátovať Dátum a Kalendár hodnoty podľa a SimpleDateFormat formát.

2. Závislosť od Maven

@JsonFormat je definované v balíku jackson-databind, takže potrebujeme nasledujúcu závislosť Maven:

 com.fasterxml.jackson.core jackson-databind 2.11.1 

3. Začíname

3.1. Používanie predvoleného formátu

Na začiatok si ukážeme koncepty používania @JsonFormat anotácia s triedou predstavujúcou používateľa.

Pretože sa snažíme vysvetliť podrobnosti anotácie, Používateľ objekt bude vytvorený na požiadanie (a nebude uložený alebo načítaný z databázy) a serializovaný do formátu JSON:

verejná trieda Používateľ {private String firstName; private String priezvisko; súkromné ​​Dátum vytvoreniaDátum = nový Dátum (); // štandardný konštruktor, nastavovatelia a getri} 

Vytvorenie a spustenie tohto príkladu kódu vráti nasledujúci výstup:

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

Ako vidíte, createdDate pole sa zobrazuje ako počet sekúnd od epochy, čo je predvolený formát používaný pre Dátum polia.

3.2. Používanie anotácie na getri

Poďme to teraz použiť @JsonFormat určiť formát, ktorý createdDate pole by malo byť serializované. Tu je pre túto zmenu aktualizovaná trieda používateľov. The createdDate pole bolo anotované, ako je uvedené, aby sa určil formát dátumu.

Formát údajov používaný pre vzor argument je určený SimpleDateFormat:

@JsonFormat (shape = JsonFormat.Shape.STRING, pattern = "[chránený e-mailom]: mm: ss.SSSZ") súkromné ​​Dátum vytvoreniaDátum;

Po uskutočnení tejto zmeny projekt znova zostavíme a spustíme. Výstup je uvedený nižšie:

{"firstName": "John", "lastName": "Smith", "createdDate": "[chránený e-mailom]: 53: 34,740 + 0000"}

Ako vidíte, createdDate pole bolo naformátované pomocou zadaného SimpleDateFormat formát pomocou @JsonFormat anotácia.

Vyššie uvedený príklad demonštruje použitie anotácie na poli. Môže byť tiež použitý v getrovej metóde (vlastnosti) nasledovne.

Napríklad môžete mať nehnuteľnosť, ktorá sa počíta pri vyvolaní. V takom prípade môžete použiť anotáciu na metóde getra. Všimnite si, že vzor bol tiež zmenený, aby vrátil iba dátumovú časť okamihu:

@JsonFormat (shape = JsonFormat.Shape.STRING, pattern = "rrrr-MM-dd") public Date getCurrentDate () {return new Date (); }

Výsledný výstup je nasledovný:

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

3.3. Zadanie miestneho nastavenia

Okrem zadania formátu dátumu môžete určiť aj miestne nastavenie, ktoré sa má použiť na serializáciu. Ak neurčíte tento parameter, bude sa serializácia vykonávať s predvoleným miestnym nastavením:

@JsonFormat (shape = JsonFormat.Shape.STRING, pattern = "[chránený e-mailom]: mm: ss.SSSZ", locale = "en_GB") public Date getCurrentDate () {return new Date (); }

3.4. Zadanie tvaru

Použitím @JsonFormat s tvar nastavený na JsonFormat.Shape.NUMBER má za následok predvolený výstup pre Dátum typy - ako počet sekúnd od epochy. Parameter vzor sa na tento prípad nevzťahuje a ignoruje sa:

@JsonFormat (shape = JsonFormat.Shape.NUMBER) public Date getDateNum () {return new Date (); }

Výstup je uvedený nižšie:

{..., "dateNum": 1482054723876}

4. Záver

Na záver, @JsonFormat sa používa na riadenie výstupného formátu súboru Dátum a Kalendár typy, ako je uvedené vyššie.

Vzorový kód uvedený vyššie je k dispozícii na GitHub.


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