csv

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.jsonJSONデータを扱うためのライブラリ
opencsvCSVファイルを操作するためのライブラリ

以下は、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に変換するためには、以下のライブラリを使用します。

これらのライブラリをプロジェクトに追加してください。

ライブラリ名説明
opencsvCSVファイルを操作するためのライブラリ
org.jsonJSONデータを扱うためのライブラリ

以下は、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形式に変換する方法について詳しく解説しました。

これにより、データのフォーマットを相互に変換する際の具体的な手法を理解できるでしょう。

今後は、実際のプロジェクトでこれらの技術を活用し、データ処理の効率を向上させてみてください。

関連記事

Back to top button