JSON von URL abrufen in Java

Haider Ali 12 Oktober 2023
JSON von URL abrufen in Java

In diesem Handbuch erfahren Sie, wie Sie JSON von einer URL in Java abrufen. Die URLs sind APIs mit Daten, die Sie zur weiteren Verwendung in JSON konvertieren können. Wir gehen davon aus, dass Sie bereits mit den grundlegenden Konzepten von JSON in Java vertraut sind.

JSON von einer URL abrufen in Java

Es sind unzählige JSON-URL-Beispiele online verfügbar. Nachdem Sie dieses Handbuch gelesen haben, können Sie auch hier besuchen und jede JSON-URL testen. Wir werden die in solchen APIs gespeicherten Daten lesen und in unserer Ausgabe im JSON-Format darstellen. Wenn wir beispielsweise diese Beispiel-URL (http://ip.jsontest.com/) öffnen, wird eine Webseite mit der folgenden Ausgabe im JSON-Format geöffnet.

JSON-Beispiel - 1

Wenn wir diese Beispiel-URL (http://headers.jsontest.com/) verwenden, wäre die Ausgabe ähnlich wie folgt.

JSON-Beispiel - 2

Sehen wir uns nun an, wie wir das gleiche JSON-Format aus der URL abrufen können. Wir nehmen die gleichen zwei Beispiele wie oben.

Codebeispiel:

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.
}

Im obigen Codebeispiel speichern wir innerhalb der main-Funktion eine URL in einer Zeichenkette. Um Daten aus der URL zu lesen, haben wir einen Objektleser erstellt. Wir haben die Methode readJsonFromUrl aufgerufen und in den Object Reader integriert. Mal sehen, wo die Magie passiert.

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

In der obigen Funktion wird der Link einem Eingang zugewiesen, der den Streaming-Vorgang startet. Um den Text aus dem Zeicheneingabestrom zu lesen, müssen wir die Zeichen für ein effizientes Lesen zwischenspeichern. Erfahren Sie mehr über Puffer hier. Das obige Beispiel wird im UTF-8 Format gepuffert. Um Daten aus BufferReader zu lesen, haben wir eine weitere öffentliche Funktion erstellt, Read.

Innerhalb der Funktion Lesen

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

In Read speichern wir einfach URL-Daten in einem String mit der do...while-Schleife. Wir lesen Zeichen für Zeichen und speichern jedes von ihnen in der Temperatur. Mit Typecasting haben wir alle Daten in Zeichen innerhalb von str. str als String, der in Text in der Funktion readJsonFromUrl gespeichert ist, wird zurückgegeben. Wir erstellen ein JSON mit JSONObject und geben es zurück.

Um das obige Programm auszuführen, müssen wir den folgenden Befehl verwenden.

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

Die Ausgabe für die Beispiel-URL (http://ip.jsontest.com/) sieht wie folgt aus.

java json von url bekommen - 1

Java Json von URL holen - 2

Autor: 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