build.gradle
に依存関係を追加(バージョンは必ず揃えてください)
build.gradle
dependenies{
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.15.1"
implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.15.1"
}
クラスを定義します。
@JsonPropertyOrder
を宣言しないと、csvの要素をアルファベット順の項目にマッピングしようとします。
Customer.kt
@JsonPropertyOrder("id", "name", "age")
data class Customer(
val id: Int,
val name: String,
val age: Int,
)
Javaと異なり、registerKotlinModule
を行う必要があるので、注意。
hoge.kt
fun hoge(){
val mapper = CsvMapper().registerKotlinModule()
val csv = "1234,Taro,23\n2345,Jiro,35"
val customers = mapper.readerFor(Customer::class.java)
.with(CsvMapper().schemaFor(Customer::class.java))
.readValues<Customer>(csv)
.readAll()
println(customers)
}
以上で、CSVをPOJOへマッピングできました。