Java – JSONとCSVを相互に変換する方法
JavaでJSONとCSVを相互に変換するには、ライブラリを活用するのが一般的です。
JSONをCSVに変換する場合、JacksonやGsonでJSONをパースし、Apache Commons CSVなどを使ってCSV形式で書き出します。
逆にCSVをJSONに変換する場合、Apache Commons CSVでCSVを読み取り、JacksonやGsonでJSON形式に変換します。
データ構造のマッピングやフォーマットの整合性に注意が必要です。
JSONをCSVに変換する方法
JSON(JavaScript Object Notation)は、データの交換フォーマットとして広く使用されています。
一方、CSV(Comma-Separated Values)は、表形式のデータを扱うためのシンプルなフォーマットです。
Javaを使用してJSONデータをCSV形式に変換する方法を解説します。
必要なライブラリのインポート
JSONをCSVに変換するためには、以下のライブラリを使用します。
これらのライブラリをプロジェクトに追加してください。
ライブラリ名 | 説明 |
---|---|
org.json | JSONデータを扱うためのライブラリ |
opencsv | CSVファイルを操作するためのライブラリ |
以下は、JSONデータをCSV形式に変換するサンプルコードです。
import org.json.JSONArray; // JSON配列を扱うためのインポート
import org.json.JSONObject; // JSONオブジェクトを扱うためのインポート
import com.opencsv.CSVWriter; // CSVライターを扱うためのインポート
import java.io.FileWriter; // ファイル書き込み用のインポート
import java.io.IOException; // 入出力例外用のインポート
public class App {
public static void main(String[] args) {
// JSONデータのサンプル
String jsonData = "[{\"name\":\"山田太郎\",\"age\":30},{\"name\":\"佐藤花子\",\"age\":25}]";
// JSON配列を作成
JSONArray jsonArray = new JSONArray(jsonData);
// CSVファイルの作成
try (CSVWriter writer = new CSVWriter(new FileWriter("output.csv"))) {
// ヘッダーの書き込み
String[] header = {"name", "age"};
writer.writeNext(header);
// JSONデータをCSVに変換
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String[] data = {jsonObject.getString("name"), String.valueOf(jsonObject.getInt("age"))};
writer.writeNext(data);
}
} catch (IOException e) {
e.printStackTrace(); // 例外が発生した場合の処理
}
}
}
上記のコードを実行すると、output.csv
というファイルが生成され、以下の内容が書き込まれます。
name,age
山田太郎,30
佐藤花子,25
このサンプルコードでは、まずJSONデータをJSONArray
として読み込みます。
次に、CSVWriter
を使用してCSVファイルを作成し、ヘッダーとデータを順に書き込んでいます。
JSONの各オブジェクトから必要な情報を抽出し、CSV形式に変換しています。
CSVをJSONに変換する方法
CSV(Comma-Separated Values)は、表形式のデータを扱うためのシンプルなフォーマットです。
一方、JSON(JavaScript Object Notation)は、データの交換フォーマットとして広く使用されています。
Javaを使用してCSVデータをJSON形式に変換する方法を解説します。
必要なライブラリのインポート
CSVをJSONに変換するためには、以下のライブラリを使用します。
これらのライブラリをプロジェクトに追加してください。
ライブラリ名 | 説明 |
---|---|
opencsv | CSVファイルを操作するためのライブラリ |
org.json | JSONデータを扱うためのライブラリ |
以下は、CSVデータをJSON形式に変換するサンプルコードです。
import com.opencsv.CSVReader; // CSVリーダーを扱うためのインポート
import org.json.JSONArray; // JSON配列を扱うためのインポート
import org.json.JSONObject; // JSONオブジェクトを扱うためのインポート
import java.io.FileReader; // ファイルリーダー用のインポート
import java.io.IOException; // 入出力例外用のインポート
public class App {
public static void main(String[] args) {
// CSVファイルのパス
String csvFile = "input.csv";
// JSON配列の作成
JSONArray jsonArray = new JSONArray();
// CSVファイルの読み込み
try (CSVReader reader = new CSVReader(new FileReader(csvFile))) {
String[] header = reader.readNext(); // ヘッダーを読み込む
String[] line;
while ((line = reader.readNext()) != null) {
JSONObject jsonObject = new JSONObject();
for (int i = 0; i < header.length; i++) {
jsonObject.put(header[i], line[i]); // ヘッダーをキー、行の値をバリューとしてJSONオブジェクトに追加
}
jsonArray.put(jsonObject); // JSON配列にオブジェクトを追加
}
} catch (IOException e) {
e.printStackTrace(); // 例外が発生した場合の処理
}
// JSONデータの出力
System.out.println(jsonArray.toString(2)); // 整形して出力
}
}
上記のコードを実行すると、以下のようなJSON形式のデータが出力されます。
[
{
"name": "山田太郎",
"age": "30"
},
{
"name": "佐藤花子",
"age": "25"
}
]
このサンプルコードでは、まずCSVファイルをCSVReader
を使用して読み込みます。
最初にヘッダーを取得し、その後各行を読み込んでJSONオブジェクトを作成します。
ヘッダーの値をキーとして、行の値をバリューとしてJSONオブジェクトに追加し、最終的にJSON配列に格納しています。
出力時には、整形されたJSONデータをコンソールに表示しています。
まとめ
この記事では、JSONデータをCSV形式に変換する方法と、CSVデータをJSON形式に変換する方法について詳しく解説しました。
これにより、データのフォーマットを相互に変換する際の具体的な手法を理解できるでしょう。
今後は、実際のプロジェクトでこれらの技術を活用し、データ処理の効率を向上させてみてください。