Puedo encontrar un método para exportar la lista de POJO de Java a csv, pero no puedo encontrar un método para exportar la lista de clases de datos de Kotlin a CSV.
Puede utilizar la solución que ofrece este artículo medio:
Para resumir
Puedes crear una función genérica simple
import java.io.FileWriter inline fun <reified T> writeCsvFile(data: Collection<T>, fileName: String) { FileWriter(fileName).use { writer -> csvMapper.writer(csvMapper.schemaFor(T::class.java).withHeader()) .writeValues(writer) .writeAll(data) .close() } }Lo probé con las siguientes dependencias:
com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.11.1 com.fasterxml.jackson.module:jackson-module-kotlin:2.12.5Esto se puede lograr utilizando Kotlin básico en lugar de una biblioteca externa.
clase de datos
data class Category( val id: String, val name: String, )función de utilidad
fun <T> csvOf( headers: List<String>, data: List<T>, itemBuilder: (T) -> List<String> ) = buildString { append(headers.joinToString(",") { "\"$it\"" }) append("\n") data.forEach { item -> append(itemBuilder(item).joinToString(",") { "\"$it\"" }) append("\n") } }uso
fun main() { val firstCategory = Category(0, "Phone") val secondCategory = Category(1, "Laptop") val categories = listOf(firstCategory, secondCategory) val csv = csvOf( listOf("id", "name"), categories ) { listOf(it.id.toString(), it.name) } println(csv) }