【问题标题】:Can't parse Map<String, Double> with Moshi in Kotlin - Unexpected primitive double无法在 Kotlin 中使用 Moshi 解析 Map<String, Double> - 意外的原始双精度
【发布时间】:2019-02-20 08:55:10
【问题描述】:
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)

刚从 Gson 切换到 Moshi,我就遇到了这个问题。我希望上面的代码能够正常工作,因为它似乎可以与 Map&lt;String, String&gt; 一起正常工作。

我得到一个 IllegalArgumentException: Unexpected original double。使用盒装类型

浮动也是如此。我知道这里发生了什么,但是这对 Moshi 来说是不可能的吗?

这是使用com.squareup.moshi:moshi-kotlin:1.8.0

【问题讨论】:

    标签: android kotlin moshi


    【解决方案1】:

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

    javaOjectType 返回原始类型对应的装箱类型。

    【讨论】:

    • 很酷,在此期间正在使用Any 并映射到Double,谢谢!不知道javaObjectType
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2015-10-10
    • 2010-10-16
    • 1970-01-01
    • 2021-05-15
    相关资源
    最近更新 更多