Obtenir Json à partir de l'URL en Java

Haider Ali 12 octobre 2023
Obtenir Json à partir de l'URL en Java

Dans ce guide, nous allons apprendre comment obtenir JSON à partir d’une URL en Java. Les URL sont des API contenant des données que vous pouvez convertir en JSON pour une utilisation ultérieure. Nous supposons que vous êtes déjà familiarisé avec les concepts de base de JSON en Java.

Obtenir JSON à partir d’une URL en Java

Il existe d’innombrables exemples d’URL JSON disponibles en ligne. Après avoir lu ce guide, vous pouvez également visiter ici et tester n’importe quelle URL JSON. Nous allons lire les données stockées dans ces API et les présenter dans notre sortie au format JSON. Par exemple, si nous ouvrons cet exemple d’URL (http://ip.jsontest.com/), il ouvrira une page Web avec la sortie suivante au format JSON.

Exemple JSON - 1

De même, si nous prenons cet exemple d’URL (http://headers.jsontest.com/), la sortie serait la suivante.

Exemple JSON - 2

Voyons maintenant comment obtenir le même format JSON à partir de l’URL. Nous reprendrons les deux mêmes exemples que ci-dessus.

Exemple de code :

import java.io.*;
import java.net.*;
import java.nio.charset.*;
import org.json.*;

public static void main(String[] args) throws IOException, JSONException {
  String url = "http://ip.jsontest.com/"; // example url which return json data
  ReadJson reader = new ReadJson(); // To ReadJson in order to read from url.
  JSONObject json = reader.readJsonFromUrl(url); // calling method in order to read.
  System.out.println(json.toString()); // simple for printing.
}

Dans l’exemple de code ci-dessus, à l’intérieur de la fonction principale, nous stockons une URL dans une chaîne. Pour lire les données de l’URL, nous avons créé un lecteur d’objets. Nous avons appelé la méthode readJsonFromUrl et l’avons intégrée au lecteur d’objets. Voyons où la magie opère.

À l’intérieur de readJsonFromUrl

public JSONObject readJsonFromUrl(String link) throws IOException, JSONException {
  InputStream input = new URL(link).openStream();
  // Input Stream Object To Start Streaming.
  try { // try catch for checked exception
    BufferedReader re = new BufferedReader(new InputStreamReader(input, Charset.forName("UTF-8")));
    // Buffer Reading In UTF-8
    String Text = Read(re); // Handy Method To Read Data From BufferReader
    JSONObject json = new JSONObject(Text); // Creating A JSON
    return json; // Returning JSON
  } catch (Exception e) {
    return null;
  } finally {
    input.close();
  }
}

Dans la fonction ci-dessus, le lien est affecté à l’entrée qui lancera le processus de diffusion en continu. Pour lire le texte à partir du flux d’entrée de caractères, nous devons mettre les caractères en mémoire tampon pour une lecture efficace. En savoir plus sur les tampons ici. L’exemple ci-dessus mettra en mémoire tampon au format UTF-8. Pour lire les données de BufferReader, nous avons créé une autre fonction publique, Read.

À l’intérieur de la fonction Read

public String Read(Reader re) throws IOException { // class Declaration
  StringBuilder str = new StringBuilder(); // To Store Url Data In String.
  int temp;
  do {
    temp = re.read(); // reading Charcter By Chracter.
    str.append((char) temp);

  } while (temp != -1);
  //  re.read() return -1 when there is end of buffer , data or end of file.

  return str.toString();
}

À l’intérieur de Read, nous stockons simplement les données URL dans une chaîne en utilisant la boucle do...while. Nous lisons caractère par caractère et stockons chacun d’eux dans temp. En utilisant le typecasting, nous avons toutes les données en caractères à l’intérieur de str. str en tant que chaîne stockée dans Text dans la fonction readJsonFromUrl est renvoyé. Nous créons un JSON en utilisant JSONObject et le renvoyons.

Pour exécuter le programme ci-dessus, nous devons utiliser la commande suivante.

javac -cp 'org.json.jar' ReadJson.java
java -cp 'org.json.jar' ReadJson.java

La sortie de l’exemple d’URL (http://ip.jsontest.com/) est la suivante.

java obtenir json à partir de l’url - 1

java obtenir json à partir de l’url - 2

Auteur: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn