Моши: проблема с платформой класса BigDecimal
У меня есть класс:
@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()
}
но это сбой.
Заранее большое спасибо!
0 ответов
Как говорит исключение, это тип платформы, и вам нужно использовать его открытый 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()