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による逐次読み込みを組み合わせることで、メモリ効率の良い処理が可能になります。
-
【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法
GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを
-
Javaのjson-simpleライブラリを使ってJSON文字列をJavaオブジェクトに変換する方法
JSON(JavaScript Object Notation)は、広く利用されているデータ交換フォーマットの一つです。軽量であり、プログラミング言語に依存しないという特徴を持っています。 json-simpleは、JSONテキストのエンコード(生成)やデコード(解析)を行うための、シンプルで軽量なJava用JSON処理ライブラリです。依存関係が少なく導入も容易なため、小規模なプロジェクトや学習用途に適しています。 以下のサンプルプログラムでは、json-simpleライブラリを使用して、JSON形式の文字列をJavaオブジェクトに変換する方法を紹介します。 サンプルコード import or