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.
De même, si nous prenons cet exemple d’URL (http://headers.jsontest.com/), la sortie serait la suivante.
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.
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