Analyser JSON en Java

Siddharth Swami 12 octobre 2023
  1. Utilisez la bibliothèque json.simple pour analyser JSON en Java
  2. Utilisez la bibliothèque org.json pour analyser JSON en Java
  3. Utilisez la bibliothèque gson pour analyser JSON en Java
  4. Utilisez la bibliothèque JsonPath pour analyser JSON en Java
Analyser JSON en Java

JSON est un langage léger et basé sur du texte pour le stockage et le transfert de données. Il est basé sur des objets en JavaScript. JSON représente deux types structurés qui sont des objets et des tableaux.

Ce didacticiel montre comment analyser JSON en Java à l’aide de différentes méthodes.

Pour nos exemples, nous allons travailler avec le fichier JSON suivant.

{
    "firstName": "Ram",
    "lastName": "Sharma",
    "age": 26
    },

    "phoneNumbers": [
        {
            "type": "home",
            "phone-number": "212 888-2365"
        }
    ] 
}

Utilisez la bibliothèque json.simple pour analyser JSON en Java

La première méthode consiste à utiliser la bibliothèque json.simple pour analyser JSON en Java. Nous devons importer deux classes de la bibliothèque java.simple, org.json.simple.JSONArray et org.json.simple.JSONObject.

Le JSONArray nous aide à analyser les éléments sous forme de tableau, et le JSONObject nous permet d’analyser les objets présents dans le texte JSON.

L’exemple suivant illustre l’utilisation de cette méthode.

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.*;

public class JSONsimple {
  public static void main(String[] args) throws Exception {
    // parsing file "JSONExample.json"
    Object ob = new JSONParser().parse(new FileReader("JSONFile.json"));

    // typecasting ob to JSONObject
    JSONObject js = (JSONObject) ob;

    String firstName = (String) js.get("firstName");
    String lastName = (String) js.get("lastName");

    System.out.println("First name is: " + firstName);
    System.out.println("Last name is: " + lastName);
  }
}

Production:

First name is: Ram
Ladt name is: Sharma

Dans l’exemple ci-dessus, nous avons lu un fichier JSON qui est déjà présent sur le système et à partir de là, nous imprimons les attributs de prénom et de nom de ce fichier.

Ici, la fonction JSONParser().parse() présente dans le org.json.simple.parser.* analyse le texte JSON du fichier. La méthode js.get() obtient ici la valeur du firstName et du lastName du fichier.

Utilisez la bibliothèque org.json pour analyser JSON en Java

Cette bibliothèque fournit une méthode statique pour lire une chaîne JSON directement au lieu de lire à partir du fichier. Les méthodes getJSONObject et getJSONArray simplifient le travail et nous fournissent la saisie requise à partir de la chaîne saisie par l’utilisateur. De plus, nous n’avons pas besoin de transtyper l’objet en JSONObject comme dans l’exemple précédent.

Voir le code ci-dessous.

import org.json.JSONArray;
import org.json.JSONObject;

public class JSON2 {
  static String json = "{\"contacDetails\": {\n" + // JSON text is written here
      "            \"firstName\": \"Ram\",\n"
      + "            \"lastName\": \"Sharma\"\n"
      + "    },\n"
      + "    \"phoneNumbers\": [\n"
      + "            {\n"
      + "                \"type\": \"home\",\n"
      + "                \"phone-number\": \"212 888-2365\",\n"
      + "            }\n"
      + "    ]"
      + "}";
  public static void main(String[] args) {
    // Make a object
    JSONObject ob = new JSONObject(json);

    // getting first and last name
    String firstName = ob.getJSONObject("contacDetails").getString("firstName");
    String lastName = ob.getJSONObject("contacDetails").getString("lastName");
    System.out.println("FirstName " + firstName);
    System.out.println("LastName " + lastName);

    // loop for printing the array as phoneNumber is stored as array.
    JSONArray arr = obj.getJSONArray("phoneNumbers");
    for (int i = 0; i < arr.length(); i++) {
      String post_id = arr.getJSONObject(i).getString("phone-number");
      System.out.println(post_id);
    }
  }
}

Production:

FirstName Ram
LastName Sharma
212 888-2365

Utilisez la bibliothèque gson pour analyser JSON en Java

Cette bibliothèque doit également être téléchargée en plus. Nous devons importer trois classes de la bibliothèque gson qui sont com.google.gson.JsonArray, com.google.gson.JsonObject et com.google.gson.JsonParser.

Nous pouvons utiliser à la fois des chaînes statiques et un fichier pour analyser JSON. Les noms de méthode pour obtenir l’entrée sont légèrement différents du précédent. Pour obtenir les données de l’objet, nous utiliserons getAsJsonObject() et pour les entrées de tableau, nous utiliserons getAsJsonArray().

Voir le code ci-dessous.

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class GsonMethod {
  static String json = "{\"contacDetails\": {\n" + // JSON text is written here
      "            \"firstName\": \"Ram\",\n"
      + "            \"lastName\": \"Sharma\"\n"
      + "    },\n"
      + "    \"phoneNumbers\": [\n"
      + "            {\n"
      + "                \"type\": \"home\",\n"
      + "                \"phone-number\": \"212 888-2365\",\n"
      + "            }\n"
      + "    ]"
      + "}";
  public static void main(String[] args) {
    // Make an object
    JsonObject ob = new JsonParser().parse(json).getAsJsonObject();

    // getting first and last name
    String firstName = ob.getAsJsonObject("contacDetails").get("firstName");
    String lastName = ob.getAsJsonObject("contacDetails").get("lastName");
    System.out.println("FirstName " + firstName);
    System.out.println("LastName " + lastName);

    // loop for printing the array as phoneNumber is stored as array.
    JsonArray arr = obj.getAsJsonArray("phoneNumbers");
    for (int i = 0; i < arr.length(); i++) {
      String PhoneNumber = arr.getAsJsonObject(i).get("phone-number");
      System.out.println(PhoneNumber);
    }
  }
}

Production:

FirstName Ram
LastName Sharma
212 888-2365

Utilisez la bibliothèque JsonPath pour analyser JSON en Java

Dans cette bibliothèque, nous utiliserons la méthode read() pour obtenir les entrées de données. Nous n’avons pas besoin de créer un objet ici pour appeler le texte JSON. Nous allons importer la classe com.jayway.jsonpath.JsonPath pour cela.

L’exemple suivant illustre cette méthode.

import com.jayway.jsonpath.JsonPath;

public class PathMethod {
  static String json = "{\"contacDetails\": {\n" + // JSON text is written here
      "            \"firstName\": \"Ram\",\n"
      + "            \"lastName\": \"Sharma\"\n"
      + "    },\n"
      + "    \"phoneNumbers\": [\n"
      + "            {\n"
      + "                \"type\": \"home\",\n"
      + "                \"phone-number\": \"212 888-2365\",\n"
      + "            }\n"
      + "    ]"
      + "}";
  public static void main(String[] args) {
    // getting input
    String firstName = JsonPath.read(json, "$.contactDetails.firstName");
    System.out.println("FirstName " + firstName);
    String lastName = JsonPath.read(json, "$.contactDetails.lastName");
    System.out.println("LastName " + lastName);

    Integer phoneNumbers = JsonPath.read(json, "$.phoneNumbers.length()");

    for (int i = 0; i < phoneNumbers; i++) {
      String number = JsonPath.read(json, "$.phoneNumber[" + i + "].phone-number");
      System.out.println(number);
    }
  }
}

Production:

FirstName Ram
LastName Sharma
212 888-2365

Article connexe - Java JSON