Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでJSON配列(JSONArray)をCSV形式に変換する方法を徹底解説

JSONは軽量かつ言語に依存しないデータ交換フォーマットとして広く利用されています。JavaではJSONArrayクラスを使うことで、文字列として渡されたJSONテキストを解析し、java.util.Listインターフェースをサポートしたベクトル(リスト)状のオブジェクトとして扱えます。

JSON配列をCSV形式に変換するには、org.json.CDLクラスが便利です。このクラスが提供する静的メソッドtoString()を使用すると、JSONArrayをカンマ区切りのテキストに簡単に変換できます。また、変換したデータをCSVファイルとして保存する場合は、org.apache.commons.io.FileUtilsパッケージをインポートし、writeStringToFile()メソッドを利用します。

必要なライブラリ

  • JSON-java(org.json):JSONObjectやJSONArray、CDLなど、JSONを操作するための基本クラス群を提供
  • Apache Commons IO:ファイルへの文字列書き込みを行うFileUtilsクラスを提供

Mavenプロジェクトでは、pom.xmlに次の依存関係を追加してください(バージョンは最新の安定版に置き換えてください)。

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20240303</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.16.1</version>
</dependency>

構文

public static java.lang.String toString(JSONArray ja) throws JSONException

引数に渡したJSONArrayを、1行目にヘッダー(キー名)、2行目以降に各要素の値が並ぶカンマ区切りテキストに変換して返します。

サンプルコード

以下の例では、JSON配列をCSV形式に変換し、「EmpDetails.csv」というファイルに保存しています。

import java.io.File;
import org.apache.commons.io.FileUtils;
import org.json.*;

public class ConvertJsonToCSVTest {
    public static void main(String[] args) {
        String jsonArrayString = "{\"fileName\": [{\"first name\": \"Ravi\",\"last name\": \"Chandra\",\"location\": \"Bangalore\"}]}";
        JSONObject output;
        try {
            output = new JSONObject(jsonArrayString);
            JSONArray docs = output.getJSONArray("fileName");
            File file = new File("EmpDetails.csv");
            // JSONArrayをカンマ区切りテキスト(CSV形式)に変換
            String csv = CDL.toString(docs);
            // CSVデータをUTF-8でファイルに書き込む
            FileUtils.writeStringToFile(file, csv, "UTF-8");
            System.out.println("Data has been successfully written to " + file);
            System.out.println(csv);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

実行結果

Data has been successfully written to EmpDetails.csv
last name,first name,location
Chandra,Ravi,Bangalore

実行すると、カレントディレクトリに「EmpDetails.csv」が作成され、1行目にヘッダー(項目名)、2行目以降に実際のデータが記録されます。

まとめ

JSON配列をCSVへ変換するには、CDL.toString()でJSONArrayをカンマ区切りテキストに変換し、FileUtils.writeStringToFile()でファイルに書き出すのが最もシンプルな方法です。ただし、CDLクラスはすべての要素が同じキーを持つフラットなJSON配列を前提としているため、ネストされた複雑な構造を扱う場合は、事前にデータを整形するか、OpenCSVなどの専用ライブラリの利用を検討してください。

  1. JSONファイルをExcel(CSV)形式に変換する方法【初心者向けガイド】

    JSONファイルという言葉を耳にしたことがある方は多いでしょう。最近、誰かからJSONファイルを受け取ったばかりという方もいるかもしれません。JSONファイルを開くこと自体は難しくありませんが、より扱いやすくするためには、Microsoft Excel(CSV)形式へ変換するのがおすすめです。では、どのようにしてJSONファイルをExcelに変換すればよいのでしょうか?実は、その手順は驚くほど簡単です。本記事では、その方法を詳しくご紹介します。 JSONをExcelのCSVファイルに変換する手順 JSONからExcelのCSVファイルへの変換には、それほど時間はかかりません。手順に慣れていれば

  2. TXTファイルをCSVに変換する方法|Excelとオンラインツールの手順を解説

    テキストファイル(TXT)は、書式設定のないプレーンなテキストのみで構成された標準的な文書形式です。ほとんどのデバイスで開くことができ、拡張子は「.txt」となります。一方、CSV(カンマ区切り値)ファイルは、データがカンマやタブなどの区切り文字で整理された、より構造化された形式のファイルです。ウェブサイトからダウンロードすると、CSVではなくTXTファイルが取得できることもありますが、単に拡張子を変更しても正しく変換されません。そのため、ユーザー自身がTXTファイルをCSVファイルに変換する必要があります。 Excelを使ってTXTファイルをCSVに変換する方法 ExcelはTXTファイルと