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

JavaのJacksonライブラリを使ってCSVをJSONに変換する方法

Jacksonは、JSONを操作するための多彩な機能を提供するJava向けJSON APIです。CSVデータをJSONデータへ変換する際には、CsvMapperクラスを利用します。CsvMapperはObjectMapperを特殊化したクラスであり、POJO(Plain Old Java Object)からCsvSchemaインスタンスを生成できる拡張機能を持っています。

CSVファイルを読み込むには、デフォルト設定でObjectReaderを構築するreader()メソッドを使用します。また、変換処理を行う前に、com.fasterxml.jackson.dataformat.csvパッケージをプロジェクトに追加しておく必要があります。

必要な依存関係(Mavenの場合)

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-csv</artifactId>
    <version>2.15.2</version>
</dependency>

入力CSVファイル(input.csv)

last name,first name,location
Chandra,Ravi,Bangalore

CSVからJSONへの変換サンプルコード

以下の例では、ヘッダー行を持つCSVファイルを読み込み、Map形式のリストとしてJSONデータに変換しています。

import java.io.*;
import java.util.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.dataformat.csv.*;

public class CsvToJsonTest {
    public static void main(String args[]) throws Exception {
        File input = new File("input.csv");
        try {
            // ヘッダー行を持つ空のスキーマを定義
            CsvSchema csv = CsvSchema.emptySchema().withHeader();
            // CsvMapperのインスタンスを生成
            CsvMapper csvMapper = new CsvMapper();
            // reader()でObjectReaderを作成し、CSVを読み込む
            MappingIterator<Map<?, ?>> mappingIterator =
                    csvMapper.reader().forType(Map.class).with(csv).readValues(input);
            // 全レコードをリストとして取得
            List<Map<?, ?>> list = mappingIterator.readAll();
            System.out.println(list);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

コードのポイント

  • CsvSchema.emptySchema().withHeader():1行目をヘッダー(列名)として扱うスキーマを自動生成します。
  • reader().forType(Map.class):各行をキーと値のペアを持つMapオブジェクトとしてマッピングします。
  • readValues():MappingIteratorを返し、CSVのレコードを1行ずつ読み取れるようにします。
  • readAll():すべてのレコードを一括してListとして取得します。

実行結果

[{last name=Chandra, first name=Ravi, location=Bangalore}]

このように、JacksonのCsvMapperを活用すれば、数行のコードでCSVデータを簡単にJSON形式へ変換できます。大規模なCSVファイルを扱う場合も、MappingIteratorによる逐次読み込みを組み合わせることで、メモリ効率の良い処理が可能になります。

  1. 【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法

    GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを

  2. Javaのjson-simpleライブラリを使ってJSON文字列をJavaオブジェクトに変換する方法

    JSON(JavaScript Object Notation)は、広く利用されているデータ交換フォーマットの一つです。軽量であり、プログラミング言語に依存しないという特徴を持っています。 json-simpleは、JSONテキストのエンコード(生成)やデコード(解析)を行うための、シンプルで軽量なJava用JSON処理ライブラリです。依存関係が少なく導入も容易なため、小規模なプロジェクトや学習用途に適しています。 以下のサンプルプログラムでは、json-simpleライブラリを使用して、JSON形式の文字列をJavaオブジェクトに変換する方法を紹介します。 サンプルコード import or