A JSON dátumok formázása a tavaszi indításkor

1. Áttekintés

Ebben az oktatóanyagban bemutatjuk a JSON dátummezők formázását a Spring Boot alkalmazásban.

Megvizsgáljuk a dátumok formázásának különféle módjait Jackson, amelyet a Spring Boot alapértelmezett JSON processzorként használ.

2.Használata @JsonFormat rajta Dátum Terület

2.1. A Formátum beállítása

Használhatjuk a @JsonFormat annotáció egy adott mező formázása érdekében:

nyilvános osztály Kapcsolatfelvétel {// egyéb mezők @JsonFormat (minta = "éééé-hh-dd") privát LocalDate születésnap; @JsonFormat (minta = "éééé-hh-nn HH: mm: ss") privát LocalDateTime lastUpdate; // szabványos mérőeszközök és beállítók}

A születésnap mezőben olyan mintát használunk, amely csak a dátumot jeleníti meg a Utolsó frissítés mezőbe belefoglaljuk az időt is.

Használtuk a Java 8 dátumtípusok amelyek elég praktikusak az időbeli típusok kezeléséhez. Természetesen, ha olyan örökölt típusokat kell használnunk, mint a java.util.Date, ugyanúgy használhatjuk az annotációt:

public class ContactWithJavaUtilDate {// egyéb mezők @JsonFormat (minta = "éééé-hh-dd") privát Dátum születésnap; @JsonFormat (minta = "éééé-hh-nn HH: mm: ss") privát Dátum lastUpdate; // szabványos mérőeszközök és beállítók}

Végül vessünk egy pillantást a kimenetre a @JsonFormat a megadott dátumformátummal:

{"birthday": "2019-02-03", "lastUpdate": "2019-02-03 10:08:02"}

Mint láthatjuk, a @JsonFormat az annotáció kiváló módja egy adott dátummező formázásának.

Csak akkor használjuk, ha a mezőkhöz speciális formázásra van szükségünk. Ha azt szeretnénk, hogy alkalmazásunkban az összes dátumra általános formátumot használjunk, vannak jobb módszerek ennek elérésére, amint később látni fogjuk.

2.2. Az időzóna beállítása

Továbbá, ha egy adott időzónát kell használnunk, beállíthatjuk a időzóna a @ attribútumaJsonFormat:

@JsonFormat (minta = "éééé-hh-nn HH: mm: ss", időzóna = "Európa / Zágráb") privát LocalDateTime lastUpdate;

Nem kell használnunk, ha egy típus már tartalmazza az időzónát, például a java.time.ZonedDatetime.

3. Az alapértelmezett formátum beállítása

És míg @JsonFormat önmagában is erőteljes, a formátum és az időzóna kemény kódolása megcsíphet minket az úton.

Ha alapértelmezett formátumot szeretnénk konfigurálni az alkalmazás összes dátumára, rugalmasabb módja annak konfigurálása alkalmazás.tulajdonságok:

tavasz.jackson.dátum-formátum = éééé-hh-nn HH: mm: ss

És ha egy meghatározott időzónát szeretnénk használni a JSON dátumainkban, akkor erre is van tulajdonság:

spring.jackson.time-zone = Európa / Zágráb

Bár az alapértelmezett formátum ilyen beállítása meglehetősen praktikus és egyszerű, ennek a megközelítésnek van hátránya. Sajnos a Java 8 dátumtípusokkal nem működik, mint LocalDate és LocalDateTime - csak a típusú mezők formázására használhatjuk java.util.Dátum vagy a java.util.Naptár. Van remény, bár hamarosan látni fogjuk.

4. Jackson testreszabása ObjectMapper

Tehát, ha Java 8 dátumtípusokat akarunk használni és állítson be egy alapértelmezett dátumformátumot, akkor meg kell vizsgálnunk létrehozása a Jackson2ObjectMapperBuilderCustomizer bab:

@Configuration public class ContactAppConfig {private static final String dateFormat = "yyyy-MM-dd"; privát statikus végső karakterlánc dátumTimeFormat = "éééé-hh-nn ÓÓ: mm: ss"; @Bean public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer () {return builder -> {builder.simpleDateFormat (dateTimeFormat); builder.serializers (új LocalDateSerializer (DateTimeFormatter.ofPattern (dateFormat))); builder.serializers (új LocalDateTimeSerializer (DateTimeFormatter.ofPattern (dateTimeFormat))); }; }}

A fenti példa bemutatja az alapértelmezett formátum konfigurálását az alkalmazásunkban. Meg kell határoznunk egy babot, és felül kell írnunk azt testreszab módszer a kívánt formátum beállításához.

Bár ez a megközelítés kissé nehézkesnek tűnhet, a jó dolog az, hogy mind a Java 8, mind a régi dátumtípusoknál működik.

5. Következtetés

Ebben a cikkben számos különböző módszert tártunk fel a JSON dátumok formázására a Spring Boot alkalmazásban.

Mint mindig, a példák forráskódját is megtalálhatjuk a GitHubon.


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