【发布时间】:2021-07-11 02:58:48
【问题描述】:
假设我收到来自 API 的以下响应
{"success":true,
"base":"EUR",
"date":"2021-04-16",
"rates":
{"AED":4.393943,"AFN":92.83145,"ALL":123.125765,"AMD":621.059723}}
并且我希望最后一个费率对象是费率类列表,即费率(代码 =“AED”,值 =“4.393943”)。我正在使用改造和 Gson。我知道我需要一个解串器或一个类型适配器。我就是不知道怎么写。
费率等级:
data class Rate(
val code:String,
val value:Float
)
货币类别:
data class Currency(
@SerializedName("success")
val success: Boolean?,
@SerializedName("base")
val base: String?,
@SerializedName("date")
val date: Date?,
@SerializedName("rates")
val rates: List<Rate>?
)
这是请求:
val gson: Gson = GsonBuilder()
.registerTypeHierarchyAdapter(Rate::class.java, TypeAdapterOrDeserializer())
.create()
val retrofit = Retrofit.Builder()
.baseUrl("https://api.exchangerate.host")
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
val jsonPlaceholderApi = retrofit.create(JsonPlaceholderApi::class.java)
val call = jsonPlaceholderApi.currency
当我从 api 请求数据时,它给出了这个错误,我知道为什么;)因为我在 Currency 类中给出了汇率列表,但它是一个 json 汇率对象。 com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为 BEGIN_ARRAY,但为 BEGIN_OBJECT
感谢您的帮助:)
【问题讨论】:
标签: android json kotlin gson retrofit