JSON na Javi
Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:
>> PROVJERITE TEČAJ1. 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