JavaのライブラリjacksonでCSVを読み込む方法

JavaのライブラリjacksonでCSVを読み込む方法

jackson-dataformat-csvライブラリを使用してCSVやTSVを読み込むことができます。

Jackson バージョン
Jackson Dataformat CSV 2.10.0

Jackson Dataformat CSV

CSVを表すクラスを作成します。

package jp.co.jacksoncsv;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({"id", "name"})
public class Csv {
@JsonProperty("id")
private String id;
@JsonProperty("name")
private String name;
}

view raw
csv
hosted with ❤ by GitHub

実際のCSVは以下のようにヘッダなしとします。

1,takahashi
2,higashiguchi

view raw
csv
hosted with ❤ by GitHub

CsvMapperクラス、CsvSchemaクラスを使用してCSVファイルを1行ずつ読み込みます。

package jp.co.jacksoncsv;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
public class SampleJackson1 {
public static void main(String[] args) throws IOException {
CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(Csv.class);
Path path = Paths.get(System.getProperty("user.dir") + "\\sample.csv");
try (BufferedReader br = Files.newBufferedReader(path)) {
MappingIterator<Csv> it = mapper.readerFor(Csv.class).with(schema).readValues(br);
while (it.hasNextValue()) { // 1行ずつ読み込む
Csv csv = it.nextValue();
System.out.println(csv.getId() + ":" + csv.getName());
}
}
}
}

view raw
jackson
hosted with ❤ by GitHub

出力結果は以下の通りです。

1:takahashi
2:higashiguchi

view raw
jackson
hosted with ❤ by GitHub

ヘッダ行があるCSVの場合

ヘッダ行があるCSVの場合、以下withHeader()メソッドを追加します。

CsvSchema schema = mapper.schemaFor(Csv.class).withHeader();

view raw
jackson
hosted with ❤ by GitHub

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA