Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't parse Map<String, Double> with Moshi in Kotlin - Unexpected primitive double

val moshi = Moshi.Builder().build()
val type = Types.newParameterizedType(Map::class.java, String::class.java, Double::class.java)
val adapter = moshi.adapter<Map<String, Double>>(type)

val result = adapter.fromJson(InitData.json)

just switching from Gson to Moshi and i ran into this problem. I expect above code to work since it seems to work fine with Map<String, String>.

I'm getting an IllegalArgumentException: Unexpected primitive double. Use the boxed type

Same thing for Float. I know what's happening here but is this not possible with Moshi?

This is using com.squareup.moshi:moshi-kotlin:1.8.0

like image 654
Flo We Avatar asked Feb 19 '19 12:02

Flo We


1 Answers

Use Types.newParameterizedType(Map::class.java, String::class.java, Double::class.javaObjectType)

javaOjectType returns the corresponding boxed type for primitive types.

like image 74
Eric Cochran Avatar answered Sep 22 '22 00:09

Eric Cochran