JSON in Java

Jackson Top

Ho appena annunciato il nuovo corso Learn Spring , incentrato sui fondamenti di Spring 5 e Spring Boot 2:

>> SCOPRI IL CORSO

1. Panoramica

Lavorare con i dati JSON in Java può essere facile , ma, come quasi tutto in Java, ci sono molte opzioni e librerie tra cui possiamo scegliere.

Questa guida dovrebbe rendere questa scelta più facile e dovrebbe darti una solida comprensione dell'ecosistema in questo momento. Discuteremo le librerie di elaborazione JSON più comuni in Java:

  • Jackson
  • Gson
  • json-io
  • Genson

Stiamo seguendo una struttura semplice per ogni libreria: prima alcune risorse utili per iniziare (sia qui su Baeldung che esterne). Quindi esamineremo un esempio di codice di base , solo per vedere come appare effettivamente il lavoro con la libreria.

2. Popolarità e statistiche di base

Per prima cosa, iniziamo con alcune statistiche come proxy per la popolarità di ciascuna libreria:

2.1. Jackson

  • Utilizzo di Maven: data-bind ( 2362 ), core ( 1377 )
  • Stelle di Github: 1457
  • Forcelle Github: 585

2.2. Gson

  • Utilizzo di Maven: 1588
  • Stelle di Github: 2079
  • Forchette Github: 471

2.3. json-io

  • Utilizzo di Maven: 11
  • Stelle GitHub: 129
  • Forchette Github: 40

2.4. Genson

  • Utilizzo di Maven: 8
  • Stelle GitHub: 67
  • Forchette Github: 15

3. Jackson

Successivamente, diamo un'occhiata al più popolare di questi: Jackson. Jackson è una libreria Java multiuso per l'elaborazione dei dati JSON.

3.1. Risorse utili

Ecco alcune risorse ufficiali per la biblioteca:

  • Wiki ufficiale di Jackson
  • Jackson su Github

Su Baeldung:

  • Tutorial di Jackson
  • Jackson Date
  • Jackson JSON Views
  • Una guida alle annotazioni di Jackson
  • Eccezioni Jackson - Problemi e soluzioni
  • Jackson - Decidi quali campi vengono serializzati / deserializzati
  • Jackson - Relazioni bidirezionali
  • Jackson - Serializzatore personalizzato
  • Jackson - Deserializzatore personalizzato

Altre valutazioni interessanti:

  • Jackson JSON Processing API in Java Tutorial di esempio
  • Jackson - ObjectMapper
  • Jackson 2 - Converti oggetto Java in / da JSON

3.2. Dipendenza da Maven

Per utilizzare la libreria, ecco la dipendenza Maven da aggiungere al tuo pom.xml :

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

Nota che l'ultima versione di Jackson in questo momento è 2.6.3 .

3.3. Semplice esempio con Jackson

Vediamo ora come utilizzare Jackson in un semplice esempio:

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

Nota che:

  • ObjectMapper.writeValueAsString () viene utilizzato per serializzare Object in stringa JSON.
  • ObjectMapper.readValue () viene utilizzato per deserializzare la stringa JSON in Java Object.
  • Esempio di output JSON:
{ "id":1, "name":"first" }

4. Gson

Gson è la prossima libreria Java JSON che esamineremo.

4.1. Risorse utili

Ecco alcune risorse ufficiali per la biblioteca:

  • Gson su Github
  • Guida per l'utente di Gson

Su Baeldung:

  • Ricettario di serializzazione Gson
  • Ricettario della deserializzazione Gson

Altre valutazioni interessanti:

  • Strategia di esclusione Gson
  • Serializzatore / deserializzatore personalizzato Gson
  • Java Gson + JSON Tutorial with Examples

4.2. Maven Dependency

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

Note that the latest version of Gson right now is 2.4.

4.3. Simple Example with Gson

Here is a simple example clarify how to use Gson to serialize/desrialize JSON:

@Test public void whenSerializeAndDeserializeUsingGson_thenCorrect(){ Gson gson = new Gson(); Foo foo = new Foo(1,"first"); String jsonStr = gson.toJson(foo); Foo result = gson.fromJson(jsonStr, Foo.class); assertEquals(foo.getId(),result.getId()); }

Note that:

  • Gson.toJson() is used to serialize Object to JSON
  • Gson.fromJson() is used to desrialize JSON to Java Object

5. Json-io

Json-io is a simple Java library to serialize/deserialize JSON.

5.1. Useful Resources

Here are some official resources for the library:

  • json-io on Google Code
  • json-io on Github

5.2. Maven Dependency

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

Note that the latest version of json-io right now is 4.1.9.

5.3. Simple Example with json-io

Now, let's take a look at a simple example of using json-io:

@Test public void whenSerializeAndDeserializeUsingJsonio_thenCorrect(){ Foo foo = new Foo(1,"first"); String jsonStr = JsonWriter.objectToJson(foo); Foo result = (Foo) JsonReader.jsonToJava(jsonStr); assertEquals(foo.getId(),result.getId()); }

Note that:

  • JsonWriter.objectToJson() is used to serialize Object to JSON.
  • JsonReader.jsonToJava() is used to deserialize Json to Java Object.
  • Sample JSON output:
{ "@type":"org.baeldung.Foo", "id":1, "name":"first" }

6. Genson

Genson is a Java and Scala to JSON conversion library, providing full databinding and streaming.

6.1. Useful Resources

Here are some official resources for the library:

  • Genson Official website
  • Genson on Github
  • Genson User Guide
  • Genson JSON format for byte arrays

6.2. Maven Dependency

 com.owlike genson ${genson.version} 

Note that the latest version of Genson right now is 1.3.

6.3. Simple Example with Genson

Here's a simple example of working with the library:

@Test public void whenSerializeAndDeserializeUsingGenson_thenCorrect(){ Genson genson = new Genson(); Foo foo = new Foo(1,"first"); String jsonStr = genson.serialize(foo); Foo result = genson.deserialize(jsonStr, Foo.class); assertEquals(foo.getId(),result.getId()); }

Note that:

  • Genson.serialize() is used to serialize Object to JSON
  • Genson.desrialize() is used to deserialize JSON to Java Object

7. Conclusion

In questo breve articolo di panoramica, abbiamo appreso le librerie di elaborazione JSON più comuni in Java.

Jackson bottom

Ho appena annunciato il nuovo corso Learn Spring , incentrato sui fondamenti di Spring 5 e Spring Boot 2:

>> SCOPRI IL CORSO