Ú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.