JSON na Javi

Jackson Top

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ

1. Pregled

Rad s JSON podacima u Javi može biti jednostavan, ali - kao i većina svega na Javi - postoji mnogo opcija i biblioteka iz kojih možemo birati.

Ovaj bi vodič trebao olakšati taj izbor i trebao bi vam dati trenutno razumijevanje ekosustava. Razmotrit ćemo najčešće JSON knjižnice za obradu na Javi:

  • Jackson
  • Gson
  • json-io
  • Gensone

Slijedimo jednostavnu strukturu za svaku knjižnicu - prvo neke korisne resurse za početak (kako ovdje na Baeldungu, tako i vanjske). Onda ćemo prijeći osnovni primjer koda, samo da vidim kako zapravo izgleda rad s knjižnicom.

2. Popularnost i osnovne statistike

Prvo, krenimo s nekim statistikama kao zamjenom za popularnost svake knjižnice:

2.1. Jackson

  • Upotreba Mavena: povezivanje podataka (2362), jezgra (1377)
  • Github zvijezde: 1457
  • Github vilice: 585

2.2. Gson

  • Upotreba Mavena: 1588
  • Github zvijezde: 2079
  • Github vilice: 471

2.3. json-io

  • Upotreba Mavena: 11
  • Github zvijezde: 129
  • Github vilice: 40

2.4. Gensone

  • Upotreba Mavena: 8
  • Github zvijezde: 67
  • Github vilice: 15

3. Jackson

Dalje, pogledajmo najpopularniji od njih - Jackson. Jackson je višenamjenska Java knjižnica za obradu JSON podataka.

3.1. Korisni resursi

Evo nekoliko službenih izvora za knjižnicu:

  • Službeni Jackson wiki
  • Jackson na Githubu

Na Baeldungu:

  • Jackson tutorial
  • Jackson Date
  • Jackson JSON Views
  • Vodič za Jacksonove bilješke
  • Jacksonove iznimke - problemi i rješenja
  • Jackson - Odlučite koja će se polja serializirati / deserijalizirati
  • Jackson - Dvosmjerni odnosi
  • Jackson - Prilagođeni serilizator
  • Jackson - prilagođeni deserijalizator

Ostala zanimljiva pisanja:

  • Jackson JSON API za obradu u Java Primjeru vodiča
  • Jackson - ObjectMapper
  • Jackson 2 - Pretvori Java objekt u / iz JSON-a

3.2. Ovisnost Mavena

Da biste koristili knjižnicu - evo ovisnosti o Mavenu koju ćete dodati u svoj pom.xml:

 com.fasterxml.jackson.core jackson-databind $ {jackson.version} 

Imajte na umu da je trenutno najnovija verzija Jacksona 2.6.3.

3.3. Jednostavan primjer s Jacksonom

Pogledajmo sada kako koristiti Jackson u jednostavnom primjeru:

@Test public void whenSerializeAndDeserializeUsingJackson_thenCorrect () baca IOException {Foo foo = new Foo (1, "first"); Mapa ObjectMapper = novi ObjectMapper (); Niz jsonStr = mapper.writeValueAsString (foo); Foo rezultat = mapper.readValue (jsonStr, Foo.class); assertEquals (foo.getId (), result.getId ()); }

Imajte na umu da:

  • ObjectMapper.writeValueAsString () koristi se za serializaciju objekta u JSON nizu.
  • ObjectMapper.readValue () koristi se za deserializaciju JSON niza u Java objekt.
  • Uzorak JSON izlaza:
{"id": 1, "name": "first"}

4. Gson

Gson je sljedeća Java JSON knjižnica koju ćemo gledati.

4.1. Korisni resursi

Evo nekoliko službenih izvora za knjižnicu:

  • Gson na Githubu
  • Vodič za korisnike tvrtke Gson

Na Baeldungu:

  • Gson kuharica za serializaciju
  • Gson kuharica za deserializaciju

Ostala zanimljiva pisanja:

  • Strategija isključenja Gsona
  • Gson prilagođeni serializator / deserijalizator
  • Java Gson + JSON Vodič s primjerima

4.2. Ovisnost Mavena

 com.google.code.gson gson $ {gson.version} 

Imajte na umu da je trenutno najnovija verzija Gsona 2.4.

4.3. Jednostavan primjer s Gson

Evo jednostavnog primjera koji pojašnjava kako koristiti Gson za serializaciju / desrializaciju JSON-a:

@Test public void whenSerializeAndDeserializeUsingGson_thenCorrect () {Gson gson = novi Gson (); Foo foo = novi Foo (1, "prvi"); Niz jsonStr = gson.toJson (foo); Foo rezultat = gson.fromJson (jsonStr, Foo.class); assertEquals (foo.getId (), result.getId ()); }

Imajte na umu da:

  • Gson.toJson () koristi se za serializaciju objekta JSON
  • Gson.fromJson () koristi se za desrializaciju JSON-a na Java objekt

5. Json-io

Json-io je jednostavna Java knjižnica za serializaciju / deserializaciju JSON-a.

5.1. Korisni resursi

Evo nekoliko službenih izvora za knjižnicu:

  • json-io na Google Codeu
  • json-io na Githubu

5.2. Ovisnost Mavena

 com.cedarsoftware json-io $ {json-io.version} 

Imajte na umu da je trenutno najnovija verzija json-io 4.1.9.

5.3. Jednostavan primjer s json-io

Sada, pogledajmo jednostavan primjer upotrebe json-io:

@Test public void whenSerializeAndDeserializeUsingJsonio_thenCorrect () {Foo foo = novi Foo (1, "prvi"); Niz jsonStr = JsonWriter.objectToJson (foo); Foo rezultat = (Foo) JsonReader.jsonToJava (jsonStr); assertEquals (foo.getId (), result.getId ()); }

Imajte na umu da:

  • JsonWriter.objectToJson () koristi se za serializaciju objekta JSON.
  • JsonReader.jsonToJava () koristi se za deserializaciju Jsona na Java objekt.
  • Uzorak JSON izlaza:
{"@type": "org.baeldung.Foo", "id": 1, "name": "first"}

6. Genson

Genson je knjižnica za pretvorbu Java i Scala u JSON koja pruža potpuno povezivanje podataka i streaming.

6.1. Korisni resursi

Evo nekoliko službenih izvora za knjižnicu:

  • Genson Službena web stranica
  • Genson na Githubu
  • Vodič za korisnike tvrtke Genson
  • Genson JSON format za bajtovske nizove

6.2. Ovisnost Mavena

 com.owlike genson $ {genson.version} 

Imajte na umu da je trenutno najnovija verzija Gensona 1.3.

6.3. Jednostavan primjer s Gensonom

Evo jednostavnog primjera rada s knjižnicom:

@Test public void whenSerializeAndDeserializeUsingGenson_thenCorrect () {Genson genson = novi Genson (); Foo foo = novi Foo (1, "prvi"); Niz jsonStr = genson.serialize (foo); Foo rezultat = genson.deserialize (jsonStr, Foo.class); assertEquals (foo.getId (), result.getId ()); }

Imajte na umu da:

  • Genson.serialize () koristi se za serializaciju objekta JSON
  • Genson.desrialize () koristi se za deserializaciju JSON-a na Java objekt

7. Zaključak

U ovom kratkom preglednom članku saznali smo o najčešćim JSON-ovim knjižnicama za obradu na Javi.

Jackson dno

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ

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