Parsen von JSON in Java

Siddharth Swami 12 Oktober 2023
  1. Verwendung der Bibliothek json.simple zum Parsen von JSON in Java
  2. Verwendung der Bibliothek org.json zum Parsen von JSON in Java
  3. Verwendung der gson-Bibliothek zum Parsen von JSON in Java
  4. Verwendung der JsonPath-Bibliothek zum Parsen von JSON in Java
Parsen von JSON in Java

JSON ist eine leichte und textbasierte Sprache zum Speichern und Übertragen von Daten. Es basiert auf Objekten in JavaScript. JSON stellt zwei strukturierte Typen dar, die Objekte und Arrays sind.

In diesem Tutorial wird gezeigt, wie Sie JSON in Java mit verschiedenen Methoden analysieren.

Für unsere Beispiele arbeiten wir mit der folgenden JSON-Datei.

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

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

Verwendung der Bibliothek json.simple zum Parsen von JSON in Java

Die erste Methode besteht darin, die Bibliothek json.simple zum Parsen von JSON in Java zu verwenden. Wir müssen zwei Klassen aus der Bibliothek java.simple importieren, org.json.simple.JSONArray und org.json.simple.JSONObject.

Das JSONArray hilft uns, Elemente in Form eines Arrays zu parsen, und das JSONObject erlaubt uns, die im JSON-Text vorhandenen Objekte zu parsen.

Das folgende Beispiel veranschaulicht die Verwendung dieser Methode.

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

Ausgabe:

First name is: Ram
Ladt name is: Sharma

Im obigen Beispiel haben wir eine JSON-Datei gelesen, die bereits auf dem System vorhanden ist, und drucken daraus die Vor- und Nachnamensattribute aus dieser Datei.

Hier parst die Funktion JSONParser().parse() in org.json.simple.parser.* den JSON-Text aus der Datei. Die Methode js.get() holt sich dabei den Wert für den firstName und den lastName aus der Datei.

Verwendung der Bibliothek org.json zum Parsen von JSON in Java

Diese Bibliothek bietet eine statische Methode zum direkten Lesen einer JSON-Zeichenkette, anstatt aus der Datei zu lesen. Die Methoden getJSONObject und getJSONArray erleichtern die Arbeit und liefern uns die erforderliche Eingabe aus dem vom Benutzer eingegebenen String. Außerdem müssen wir das Objekt nicht wie im vorherigen Beispiel in JSONObject umwandeln.

Siehe den Code unten.

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

Ausgabe:

FirstName Ram
LastName Sharma
212 888-2365

Verwendung der gson-Bibliothek zum Parsen von JSON in Java

Auch diese Bibliothek muss zusätzlich heruntergeladen werden. Wir müssen drei Klassen aus der gson-Bibliothek importieren, nämlich com.google.gson.JsonArray, com.google.gson.JsonObject und com.google.gson.JsonParser.

Wir können sowohl statische Strings als auch eine Datei verwenden, um JSON zu analysieren. Die Methodennamen zum Abrufen der Eingabe unterscheiden sich geringfügig von den vorherigen. Zum Abrufen der Objektdaten verwenden wir getAsJsonObject() und für Array-Eingaben verwenden wir getAsJsonArray().

Siehe den Code unten.

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

Ausgabe:

FirstName Ram
LastName Sharma
212 888-2365

Verwendung der JsonPath-Bibliothek zum Parsen von JSON in Java

In dieser Bibliothek verwenden wir die Methode read(), um die Dateneingaben zu erhalten. Wir müssen hier kein Objekt erstellen, um den JSON-Text aufzurufen. Dazu importieren wir die Klasse com.jayway.jsonpath.JsonPath.

Das folgende Beispiel veranschaulicht diese Methode.

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

Ausgabe:

FirstName Ram
LastName Sharma
212 888-2365

Verwandter Artikel - Java JSON