Erstellen eines wiederverwendbaren JSON-Utilities
In der Softwareentwicklung ist es bewährte Praxis, wiederverwendbaren Code zu schreiben. Anstatt die Logik zum Einlesen von Dateien in jeder Klasse zu wiederholen, können wir eine Utility-Klasse erstellen. Dieser Ansatz, bekannt als "Don't Repeat Yourself" (DRY), macht Ihren Code sauberer, wartungsfreundlicher und weniger anfällig für Fehler.
Erstellen der Klasse JsonUtils
Lassen Sie uns eine Hilfsklasse erstellen, die die Logik zum Lesen einer JSON-Datei kapselt.
- Erstellen Sie in der WebIDE eine neue Datei namens
JsonUtils.java im Verzeichnis src/main/java/com/labex.
- Fügen Sie den folgenden Code hinzu:
package com.labex;
import org.json.JSONObject;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class JsonUtils {
/**
* Reads a JSON file from a relative path and parses it into a JSONObject.
*
* @param filePath The relative path to the JSON file.
* @return A JSONObject representing the file's content.
* @throws IOException if an I/O error occurs reading from the file.
*/
public static JSONObject readJsonObjectFromFile(String filePath) throws IOException {
String content = new String(Files.readAllBytes(Paths.get(filePath)));
return new JSONObject(content);
}
}
Diese Klasse enthält eine einzige static Methode, readJsonObjectFromFile. Eine statische Methode gehört zur Klasse selbst und nicht zu einer Instanz. Sie können sie also direkt über den Klassennamen aufrufen (z. B. JsonUtils.readJsonObjectFromFile(...)), ohne ein Objekt erstellen zu müssen.
Verwendung der Utility-Klasse
Erstellen wir nun eine Hauptanwendungsklasse, die unser neues Utility nutzt.
- Erstellen Sie in der WebIDE eine neue Datei namens
Main.java im Verzeichnis src/main/java/com/labex.
- Fügen Sie den folgenden Code in
Main.java ein:
package com.labex;
import org.json.JSONObject;
public class Main {
public static void main(String[] args) {
try {
// Use the utility class to read the JSON file
JSONObject data = JsonUtils.readJsonObjectFromFile("src/main/resources/data.json");
// Now we can work with the JSONObject as before
String name = data.getString("name");
String city = data.getJSONObject("address").getString("city");
System.out.println("--- Data read using JsonUtils ---");
System.out.println("Name: " + name);
System.out.println("City: " + city);
System.out.println("\nSuccessfully read JSON using JsonUtils.");
} catch (Exception e) {
System.out.println("An error occurred: " + e.getMessage());
}
}
}
Diese Main-Klasse ist deutlich übersichtlicher. Sie delegiert die Aufgabe des Lesens und Parsens an JsonUtils und konzentriert sich nur darauf, was mit dem resultierenden JSONObject geschehen soll.
Ausführen der Hauptanwendung
Führen wir abschließend unsere Main-Klasse aus.
- Öffnen Sie das Terminal in der WebIDE.
- Führen Sie den folgenden Befehl aus:
mvn compile exec:java -Dexec.mainClass="com.labex.Main"
Sie sehen die folgende Ausgabe:
--- Data read using JsonUtils ---
Name: John Doe
City: Anytown
Successfully read JSON using JsonUtils.
Durch die Erstellung einer Utility-Klasse haben Sie Ihren Code modularer und wiederverwendbarer gestaltet, was ein Kernprinzip effektiver Softwareentwicklung ist.