Моши: проблема с платформой класса BigDecimal - PullRequest
0 голосов
/ 02 марта 2019

У меня есть класс:

@JsonClass(generateAdapter = true)
data class DayAveragePriceModel(
    val asset: Asset,
    val value: BigDecimal
)

, где 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()
    }

, но он падает.

Заранее большое спасибо!

1 Ответ

0 голосов
/ 05 марта 2019

Как говорит исключение, это тип платформы, и вам нужно использовать его открытый 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()
...