Kotlin kotlinx-serialization-csv multi array list

346 views Asked by At

Does anyone know how to deserialize a csv containing multiarray list:

Code, values
1234, [[11111, 22222], [44444, 99999]]
1

There are 1 answers

0
lukas.j On
val csv = """
Code, Values
1234, [[11111, 22222], [44444, 99999]]
1235, [[11], [21, 22], [31, 32, 33], [41, 42, 43, 44]]
"""

data class Item(
  val Code: Int,
  val Values: List<List<Int>>
)

val result: List<Item> = csv
  .trimIndent()
  .lines()
  .drop(1)
  .map { line ->
    Item(
      line
        .substringBefore(",")
        .toInt(),
      line
        .substringAfter(",")
        .replace(" ", "")
        .removeSurrounding("[[", "]]")
        .split("],[")
        .map { group ->
          group
            .split(",")
            .map { value ->
              value.toInt()
            }
        }

    )
  }

result.forEach { println(it) }

// Output:
// Item(Code=1234, Values=[[11111, 22222], [44444, 99999]])
// Item(Code=1235, Values=[[11], [21, 22], [31, 32, 33], [41, 42, 43, 44]])