Comment parser un JSON en Java ?

Des librairies externes permettent de parser une chaîne de caractères JSON. Voici comment.

Le langage JSON était utilisé lors de sa création pour stocker des objets JavaScript. Il s'est répandu et peut désormais être utilisé par la plupart des langages de développement, y compris Java. Le langage Java ne fournit pas de méthodes natives pour parser une chaîne de caractères JSON. La solution la plus simple est de faire appel à des librairies externes.

La librairie org.json permet de parser une chaîne de caractères JSON pour ensuite lire les objets et leurs attributs directement, que ce soit comme un objet, ou bien un tableau.

import org.json.*;
//JSON de test
string maTasse = {\couleur\: \Rouge\};
JSONObject tasse = new JSONObject(maTasse);
System.out.println(tasse.getString(couleur)); //Rouge

La librairie de Google GSON peut également récupérer directement la valeur d'un attribut en parsant le JSON.

JsonObject objet = new JsonParser().parse(maTasse).getAsJsonObject();
System.out.println(objet.get(couleur).getAsString()); //Rouge

Cette librairie peut également sérialiser un JSON pour le transformer en objet Java et effectuer l'opération inverse.

//Classe Java à laquelle va correspondre le JSON
private class Tasse {
 public String couleur;

public Tasse(String couleur) {
 this.couleur = couleur;
 }
}
//Sérialisation / désérialisation du JSON
Gson g = new Gson();
Tasse maNouvelleTasse = g.fromJson(maTasse, Tasse.class);
System.out.println(maNouvelleTasse.couleur); //Rouge
System.out.println(g.toJson(maNouvelleTasse)); // {couleur:Rouge}

La librairie Jackson permet également de sérialiser un objet Java en JSON et d'effectuer l'opération inverse.

ObjectMapper mapper = new ObjectMapper();
Tasse maNouvelleTasse = mapper.readValue(maTasse, Tasse.class);
System.out.println(maNouvelleTasse.couleur); //Rouge

Java