Parsen von JSON in Java
-
Verwendung der Bibliothek
json.simple
zum Parsen von JSON in Java -
Verwendung der Bibliothek
org.json
zum Parsen von JSON in Java -
Verwendung der
gson
-Bibliothek zum Parsen von JSON in Java -
Verwendung der
JsonPath
-Bibliothek zum 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