再利用可能な JSON ユーティリティの作成
ソフトウェア開発において、再利用可能なコードを書くことはベストプラクティスです。ファイル読み込みロジックを必要とする各クラスで繰り返すのではなく、ユーティリティクラスを作成できます。このアプローチは「Don't Repeat Yourself」(DRY)として知られており、コードをよりきれいに、保守しやすく、エラーを起こりにくくします。
JsonUtils クラスの作成
JSON ファイルの読み込みロジックをカプセル化するユーティリティクラスを作成しましょう。
- WebIDE で、
src/main/java/com/labex ディレクトリ内に JsonUtils.java という名前の新しいファイルを作成します。
- 以下のコードを追加します。
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 ファイルからの読み込み中に I/O エラーが発生した場合。
*/
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 で、
src/main/java/com/labex ディレクトリ内に Main.java という名前の新しいファイルを作成します。
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("--- 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());
}
}
}
この 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.
ユーティリティクラスを作成することで、コードがよりモジュール化され、再利用可能になりました。これは効果的なソフトウェアエンジニアリングの重要な原則です。