Создание повторно используемой утилиты для работы с JSON
В разработке программного обеспечения лучшей практикой является написание повторно используемого кода. Вместо того чтобы повторять логику чтения файлов в каждом классе, который в ней нуждается, мы можем создать класс утилиты. Этот подход, известный как "Не повторяйся" (Don't Repeat Yourself - DRY), делает ваш код более чистым, поддерживаемым и менее подверженным ошибкам.
Создание класса JsonUtils
Давайте создадим класс утилиты для инкапсуляции логики чтения JSON-файла.
- В WebIDE создайте новый файл с именем
JsonUtils.java в директории src/main/java/com/labex.
- Добавьте следующий код:
package com.labex;
import org.json.JSONObject;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class JsonUtils {
/**
* Читает JSON-файл по относительному пути и парсит его в JSONObject.
*
* @param filePath Относительный путь к JSON-файлу.
* @return JSONObject, представляющий содержимое файла.
* @throws IOException если при чтении файла возникает ошибка ввода-вывода.
*/
public static JSONObject readJsonObjectFromFile(String filePath) throws IOException {
String content = new String(Files.readAllBytes(Paths.get(filePath)));
return new JSONObject(content);
}
}
Этот класс содержит один static метод, readJsonObjectFromFile. static метод принадлежит самому классу, а не его экземпляру, поэтому вы можете вызывать его напрямую, используя имя класса (например, JsonUtils.readJsonObjectFromFile(...)), без создания объекта.
Использование класса утилиты
Теперь давайте создадим основной класс приложения, который использует нашу новую утилиту.
- В WebIDE создайте новый файл с именем
Main.java в директории src/main/java/com/labex.
- Добавьте следующий код в
Main.java:
package com.labex;
import org.json.JSONObject;
public class Main {
public static void main(String[] args) {
try {
// Используем класс утилиты для чтения JSON-файла
JSONObject data = JsonUtils.readJsonObjectFromFile("src/main/resources/data.json");
// Теперь мы можем работать с JSONObject, как и раньше
String name = data.getString("name");
String city = data.getJSONObject("address").getString("city");
System.out.println("--- Данные, прочитанные с помощью JsonUtils ---");
System.out.println("Name: " + name);
System.out.println("City: " + city);
System.out.println("\nУспешно прочитан JSON с помощью JsonUtils.");
} catch (Exception e) {
System.out.println("Произошла ошибка: " + e.getMessage());
}
}
}
Этот класс Main гораздо чище. Он делегирует задачу чтения и парсинга файла классу JsonUtils, фокусируясь только на том, что делать с полученным JSONObject.
Запуск основного приложения
Наконец, давайте запустим наш класс Main.
- Откройте терминал в WebIDE.
- Выполните следующую команду:
mvn compile exec:java -Dexec.mainClass="com.labex.Main"
Вы увидите следующий вывод:
--- Data read using JsonUtils ---
Name: John Doe
City: Anytown
Successfully read JSON using JsonUtils.
Создав класс утилиты, вы сделали свой код более модульным и повторно используемым, что является ключевым принципом эффективной разработки программного обеспечения.