Création d'un Utilitaire JSON Réutilisable
Dans le développement logiciel, il est de bonne pratique d'écrire du code réutilisable. Au lieu de répéter la logique de lecture de fichier dans chaque classe qui en a besoin, nous pouvons créer une classe utilitaire. Cette approche, connue sous le nom de "Don't Repeat Yourself" (DRY), rend votre code plus propre, plus facile à maintenir et moins sujet aux erreurs.
Création de la Classe JsonUtils
Créons une classe utilitaire pour encapsuler la logique de lecture d'un fichier JSON.
- Dans le WebIDE, créez un nouveau fichier nommé
JsonUtils.java dans le répertoire src/main/java/com/labex.
- Ajoutez le code suivant :
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);
}
}
Cette classe contient une seule méthode static, readJsonObjectFromFile. Une méthode static appartient à la classe elle-même plutôt qu'à une instance, vous pouvez donc l'appeler directement en utilisant le nom de la classe (par exemple, JsonUtils.readJsonObjectFromFile(...)) sans créer d'objet.
Utilisation de la Classe Utilitiare
Maintenant, créons une classe d'application principale qui utilise notre nouvel utilitaire.
- Dans le WebIDE, créez un nouveau fichier nommé
Main.java dans le répertoire src/main/java/com/labex.
- Ajoutez le code suivant à
Main.java :
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());
}
}
}
Cette classe Main est beaucoup plus propre. Elle délègue la tâche de lecture et d'analyse du fichier à JsonUtils, se concentrant uniquement sur ce qu'il faut faire avec le JSONObject résultant.
Exécution de l'Application Principale
Enfin, exécutons notre classe Main.
- Ouvrez le terminal dans le WebIDE.
- Exécutez la commande suivante :
mvn compile exec:java -Dexec.mainClass="com.labex.Main"
Vous verrez la sortie suivante :
--- Data read using JsonUtils ---
Name: John Doe
City: Anytown
Successfully read JSON using JsonUtils.
En créant une classe utilitaire, vous avez rendu votre code plus modulaire et réutilisable, ce qui est un principe clé d'une ingénierie logicielle efficace.