Útmutató @JsonFormat Jacksonhoz

1. Áttekintés

Ebben a cikkben megpróbáljuk megérteni, hogyan kell használni @JsonFormat Jacksonban. Ez egy Jackson-annotáció, amely meghatározza a mezők és / vagy tulajdonságok formázásának módját a JSON kimenethez.

Pontosabban ez a kommentár lehetővé teszi a formázás módjának megadását Dátum és Naptár értékek a SimpleDateFormat formátum.

2. Maven-függőség

@JsonFormat a jackson-databaseind ​​csomagban van meghatározva, így a következő Maven-függőségre van szükségünk:

 com.fasterxml.jackson.core jackson-databind 2.11.1 

3. Az első lépések

3.1. Az Alapértelmezett formátum használata

A kezdéshez bemutatjuk a @JsonFormat annotáció egy felhasználót képviselő osztállyal.

Mivel megpróbáljuk elmagyarázni az annotáció részleteit, a Felhasználó Az objektum kérésre létrehozásra kerül (és nem tárolható vagy töltődik be egy adatbázisból), és sorosítva lesz a JSON-ra:

public class Felhasználó {private String keresztnév; privát karakterlánc vezetéknév; privát Dátum létrehozvaDátum = új Dátum (); // szabványos kivitelező, beállítók és szerelők} 

A kód példájának elkészítése és futtatása a következő kimenetet adja vissza:

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

Mint láthatja, a Létrehozás dátuma mező a másodpercek számaként jelenik meg a korszak óta, amely az alapértelmezett formátum Dátum mezők.

3.2. Az Annotation on a Getter használata

Használjuk most @JsonFormat annak a formátumnak a megadásához, amelyet a Létrehozás dátuma mezőt sorosítani kell. Itt van a felhasználói osztály frissítve ehhez a változáshoz. A Létrehozás dátuma mezőt a kép dátumformátumának megadásához az ábra szerint jegyzeteltük.

A programhoz használt adatformátum minta argumentumot adja meg SimpleDateFormat:

@JsonFormat (shape = JsonFormat.Shape.STRING, pattern = "[email protected]: mm: ss.SSSZ") private Dátum létrehozásának dátuma;

Ezzel a változtatással újra felépítjük a projektet és futtatjuk. A kimenet az alábbiakban látható:

{"keresztnév": "John", "vezetéknév": "Smith", "createdDate": "[e-mail védett]: 53: 34.740 + 0000"}

Mint láthatja, a Létrehozás dátuma mezőt a megadottal formázta SimpleDateFormat formátum a @JsonFormat annotáció.

A fenti példa bemutatja az annotáció mezőben való használatát. Használható getter módszerben (tulajdonság) is az alábbiak szerint.

Például lehet egy tulajdonsága, amelyet a meghíváskor számolnak. Ilyen esetben használhatja a feljegyzéseket a getter metóduson. Ne feledje, hogy a mintát is megváltoztatták, hogy csak a pillanat dátumrészét adja vissza:

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

A kapott kimenet a következő:

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

3.3. A területi beállítás megadása

A dátumformátum megadása mellett megadhatja a sorosításhoz használandó területi beállításokat is. Ha nem adja meg ezt a paramétert, akkor az alapértelmezett területi beállítással sorosítást hajtanak végre:

@JsonFormat (shape = JsonFormat.Shape.STRING, pattern = "[email protected]: mm: ss.SSSZ", locale = "en_GB") public Date getCurrentDate () {return new Date (); }

3.4. Alak megadása

Használata @JsonFormat val vel alak állítva JsonFormat.Shape.SUMBER az alapértelmezett kimenetet eredményezi Dátum típusok - mint a korszak óta eltelt másodpercek száma. A paraméter minta nem alkalmazható erre az esetre, és figyelmen kívül hagyja:

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

A kimenet az alábbiakban látható:

{..., "dateNum": 1482054723876}

4. Következtetés

Következtetésképpen, @JsonFormat a kimeneti formátum vezérlésére szolgál Dátum és Naptár a fent bemutatott típusok.

A fent bemutatott mintakód elérhető a GitHubon.