Java – CSVとDTO形式を相互に変換する方法を解説
JavaでCSVとDTO(Data Transfer Object)を相互に変換するには、CSVデータをパースしてDTOオブジェクトにマッピングし、逆にDTOオブジェクトをCSV形式に変換します。
Apache Commons CSVやOpenCSVなどのライブラリを使用すると便利です。
CSVをDTOに変換する際は、CSVの各行をDTOのフィールドに対応付けます。
逆にDTOをCSVに変換する際は、DTOのフィールド値をCSVの列として出力します。
リフレクションを活用すれば汎用的な実装も可能です。
JavaでCSVをDTOに変換する方法
CSV(Comma-Separated Values)形式は、データをテキストファイルとして保存するための一般的なフォーマットです。
一方、DTO(Data Transfer Object)は、データを転送するためのオブジェクトです。
Javaでは、CSVデータをDTOに変換することで、データの操作や管理が容易になります。
CSVファイルの読み込み
まず、CSVファイルを読み込むために、BufferedReader
を使用します。
以下は、CSVファイルを読み込むサンプルコードです。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
class UserDTO {
private String name;
private int age;
// コンストラクタ
public UserDTO(String name, int age) {
this.name = name;
this.age = age;
}
// ゲッター
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class App {
public static void main(String[] args) {
String csvFile = "users.csv"; // 読み込むCSVファイル名
String line;
String csvSplitBy = ","; // CSVの区切り文字
List<UserDTO> userList = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
String[] user = line.split(csvSplitBy); // 行を分割
UserDTO userDTO = new UserDTO(user[0], Integer.parseInt(user[1])); // DTOに変換
userList.add(userDTO); // リストに追加
}
} catch (IOException e) {
e.printStackTrace();
}
// 読み込んだデータの表示
for (UserDTO user : userList) {
System.out.println("名前: " + user.getName() + ", 年齢: " + user.getAge());
}
}
}
このコードでは、users.csv
というCSVファイルを読み込み、各行をUserDTO
オブジェクトに変換しています。
CSVの各行は、カンマで区切られた名前と年齢の情報を持っています。
サンプルCSVファイルの内容
以下は、users.csv
ファイルのサンプル内容です。
山田太郎,30
鈴木花子,25
佐藤次郎,40
上記のコードを実行すると、以下のような出力が得られます。
名前: 山田太郎, 年齢: 30
名前: 鈴木花子, 年齢: 25
名前: 佐藤次郎, 年齢: 40
このように、CSVファイルからデータを読み込み、DTOに変換することができます。
これにより、データの管理や操作が容易になります。
JavaでDTOをCSVに変換する方法
DTO(Data Transfer Object)をCSV(Comma-Separated Values)形式に変換することで、データを簡単に保存したり、他のシステムと連携したりすることができます。
以下では、Javaを使用してDTOをCSV形式に変換する方法を解説します。
DTOクラスの定義
まず、変換するDTOクラス
を定義します。
以下は、UserDTOクラス
の例です。
class UserDTO {
private String name;
private int age;
// コンストラクタ
public UserDTO(String name, int age) {
this.name = name;
this.age = age;
}
// ゲッター
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
DTOをCSV形式に変換するメソッド
次に、DTOのリストをCSV形式に変換するメソッドを作成します。
以下のサンプルコードでは、List<UserDTO>
をCSV形式の文字列に変換します。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class App {
public static void main(String[] args) {
List<UserDTO> userList = new ArrayList<>();
userList.add(new UserDTO("山田太郎", 30));
userList.add(new UserDTO("鈴木花子", 25));
userList.add(new UserDTO("佐藤次郎", 40));
String csvFile = "output.csv"; // 出力するCSVファイル名
try (BufferedWriter bw = new BufferedWriter(new FileWriter(csvFile))) {
// ヘッダーの書き込み
bw.write("名前,年齢");
bw.newLine();
// DTOのリストをCSV形式で書き込む
for (UserDTO user : userList) {
bw.write(user.getName() + "," + user.getAge());
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
このコードでは、UserDTO
のリストをoutput.csv
というファイルに書き込んでいます。
最初にヘッダーを追加し、その後に各DTOの情報をカンマ区切りで書き込んでいます。
上記のコードを実行すると、output.csv
ファイルには以下の内容が書き込まれます。
名前,年齢
山田太郎,30
鈴木花子,25
佐藤次郎,40
このように、DTOをCSV形式に変換することで、データを簡単に保存することができます。
これにより、他のシステムとのデータ連携がスムーズになります。
まとめ
この記事では、Javaを使用してCSV形式のデータをDTOに変換する方法と、DTOをCSV形式に変換する方法について解説しました。
これにより、データの管理や操作がより効率的に行えるようになります。
今後は、実際のプロジェクトでこれらの技術を活用し、データの取り扱いをさらにスムーズに進めてみてください。