Skip to content

Instantly share code, notes, and snippets.

@stefanozanella
Created August 13, 2023 15:42
Show Gist options
  • Save stefanozanella/8a941376b6743e9167edcc584c4f8145 to your computer and use it in GitHub Desktop.
Save stefanozanella/8a941376b6743e9167edcc584c4f8145 to your computer and use it in GitHub Desktop.
Kotlin grass missing field parsing error
import com.github.doyaaaaaken.kotlincsv.dsl.csvReader
import io.blackmo18.kotlin.grass.dsl.grass
val csv = """
firstName,lastName,email
John,Doe,john.doe@gmail.com
""".trimIndent()
data class Contact(
val firstName: String?,
val lastName: String?,
val email: String?,
val location: String?,
)
@OptIn(ExperimentalStdlibApi::class)
fun parseContacts(csv: String) =
csvReader().readAllWithHeader(csv).let {
grass<Contact> {
ignoreUnknownFields = true
}.harvest(it)
}
val contacts = parseContacts(csv)
println(contacts)
java.lang.IllegalArgumentException: argument type mismatch
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:70)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484)
at kotlin.reflect.jvm.internal.calls.CallerImpl$Constructor.call(CallerImpl.kt:41)
at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108)
at io.blackmo18.kotlin.grass.pot.Stem.harvestData(Stem.kt:49)
at io.blackmo18.kotlin.grass.pot.Plant.harvest(Plant.kt:42)
at Line_4.parseContacts(Line_4.kts:6)
at Line_5.<init>(Line_5.kts:1)
Caused by: java.lang.ClassCastException: Cannot cast kotlin.Unit to java.lang.String
at java.base/java.lang.Class.cast(Class.java:3946)
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment