Moshi:平台类 BigDecimal 的问题

nol*_*man 11 android json moshi

我有一堂课:

@JsonClass(generateAdapter = true)
data class DayAveragePriceModel(
    val asset: Asset,
    val value: BigDecimal
)
Run Code Online (Sandbox Code Playgroud)

Asset我的自定义类在哪里。我正在尝试使用,Moshi但出现以下错误:

Caused by: java.lang.IllegalArgumentException: Platform class java.math.BigDecimal (with no annotations) requires explicit JsonAdapter to be registered

我该如何解决这个问题?我试过

        return Moshi.Builder()
            .add(KotlinJsonAdapterFactory())
            .add(Object::class.java)
            .build()
    }
Run Code Online (Sandbox Code Playgroud)

但它正在崩溃。

非常感谢!

Eri*_*ran 20

正如例外所说,这是一种平台类型,您需要使用其公共 API 对其进行编码和解码。

object BigDecimalAdapter {
  @FromJson fun fromJson(string: String) = BigDecimal(string)

  @ToJson fun toJson(value: BigDecimal) = value.toString()
}

return Moshi.Builder()
    .add(BigDecimalAdapter)
    .add(KotlinJsonAdapterFactory())
    .build()
Run Code Online (Sandbox Code Playgroud)