JSON en Java

Haut Jackson

Je viens d'annoncer le nouveau cours Learn Spring , axé sur les principes de base de Spring 5 et Spring Boot 2:

>> VOIR LE COURS

1. Vue d'ensemble

Travailler avec des données JSON en Java peut être facile , mais - comme presque tout en Java - il existe de nombreuses options et bibliothèques parmi lesquelles nous pouvons choisir.

Ce guide devrait faciliter ce choix et devrait vous donner une solide compréhension de l'écosystème dès maintenant. Nous discuterons des bibliothèques de traitement JSON les plus courantes en Java:

  • Jackson
  • Gson
  • json-io
  • Genson

Nous suivons une structure simple pour chaque bibliothèque - d'abord quelques ressources utiles pour commencer (à la fois ici sur Baeldung et en externe). Ensuite, nous allons passer en revue un exemple de code de base , juste pour voir à quoi ressemble réellement le travail avec la bibliothèque.

2. Popularité et statistiques de base

Tout d'abord, commençons par quelques statistiques comme indicateur de la popularité de chaque bibliothèque:

2.1. Jackson

  • Utilisation Maven: data-bind ( 2362 ), core ( 1377 )
  • Étoiles Github: 1457
  • Fourches Github: 585

2.2. Gson

  • Utilisation Maven: 1588
  • Étoiles Github: 2079
  • Fourches Github: 471

2.3. json-io

  • Utilisation Maven: 11
  • Étoiles Github: 129
  • Fourches Github: 40

2.4. Genson

  • Utilisation Maven: 8
  • Étoiles Github: 67
  • Fourches Github: 15

3. Jackson

Ensuite, jetons un coup d'œil au plus populaire d'entre eux - Jackson. Jackson est une bibliothèque Java polyvalente pour le traitement des données JSON.

3.1. Ressources utiles

Voici quelques ressources officielles de la bibliothèque:

  • Wiki officiel de Jackson
  • Jackson sur Github

Sur Baeldung:

  • Tutoriel Jackson
  • Jackson Date
  • Vues Jackson JSON
  • Un guide des annotations de Jackson
  • Exceptions Jackson - Problèmes et solutions
  • Jackson - Décidez quels champs seront sérialisés / désérialisés
  • Jackson - Relations bidirectionnelles
  • Jackson - Sérialiseur personnalisé
  • Jackson - Désérialiseur personnalisé

Autres écrits intéressants:

  • Tutoriel d'exemple d'API de traitement JSON Jackson dans Java
  • Jackson - ObjectMapper
  • Jackson 2 - Convertir un objet Java vers / depuis JSON

3.2. Dépendance de Maven

Pour utiliser la bibliothèque - voici la dépendance Maven à ajouter dans votre pom.xml :

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

Notez que la dernière version de Jackson actuellement est la 2.6.3 .

3.3. Exemple simple avec Jackson

Voyons maintenant comment utiliser Jackson dans un exemple simple:

@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()); }

Notez que:

  • ObjectMapper.writeValueAsString () est utilisé pour sérialiser Object en chaîne JSON.
  • ObjectMapper.readValue () est utilisé pour désérialiser la chaîne JSON en objet Java.
  • Exemple de sortie JSON:
{ "id":1, "name":"first" }

4. Gson

Gson est la prochaine bibliothèque Java JSON que nous allons examiner.

4.1. Ressources utiles

Voici quelques ressources officielles de la bibliothèque:

  • Gson sur Github
  • Guide de l'utilisateur Gson

Sur Baeldung:

  • Livre de recettes de sérialisation Gson
  • Livre de recettes de désérialisation Gson

Autres écrits intéressants:

  • Stratégie d'exclusion de Gson
  • Sérialiseur / désérialiseur personnalisé 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

Dans cet article de présentation rapide, nous avons découvert les bibliothèques de traitement JSON les plus courantes en Java.

Jackson bas

Je viens d'annoncer le nouveau cours Learn Spring , axé sur les principes de base de Spring 5 et Spring Boot 2:

>> VOIR LE COURS