android - 预期 BEGIN_OBJECT 但在 Kotlin 中使用 Gson 是 BEGIN_ARRAY”
问题描述
我正在尝试从 api 检索数据。JSON 响应如下所示
{
"result":"success",
"documentation":"https://www.exchangerate-api.com/docs",
"terms_of_use":"https://www.exchangerate-api.com/terms"
"supported_codes":[
["AED","UAE Dirham"],
["AFN","Afghan Afghani"],
["ALL","Albanian Lek"],
["AMD","Armenian Dram"],
["ANG","Netherlands Antillian Guilder"],
["AOA","Angolan Kwanza"],
["ARS","Argentine Peso"],
["AUD","Australian Dollar"],
["AWG","Aruban Florin"],
["AZN","Azerbaijani Manat"],
["BAM","Bosnia and Herzegovina Convertible Mark"],
["BBD","Barbados Dollar"] etc. etc.
]
}
这就是我拥有的数据类。
CurrencyResponse.kt
package com.example.currencyconverter.data
import com.squareup.moshi.Json
data class CurrencyResponse(
@Json(name="supported_codes") var supported_codes: List<Codes>
) {
data class Codes(
@Json(name="0") var currency_code: String
) {
}
}
但是我仍然收到标题中提到的错误。任何帮助是极大的赞赏
解决方案
如果可能的话,我认为 API 响应方案需要稍作修改。我认为supported_codes
应该包含对象列表,即
"supported_codes":[
{
"currency_code": "AED",
"currency_name": "UAE Dirham"
},
{
"currency_code": "AFN",
"currency_name": "Afghan Afghani"
},
... etc ...
]
然后,在您的 kotlin 代码中,您需要将Codes
数据类修改为:
data class Codes(
@Json(name="currency_code") val currencyCode: String,
@Json(name="currency_name") val currencyName: String,
)
推荐阅读
- google-ads-api - AW API 的查询生成器?
- r - 如何通过 tibble 列表循环脚本并将它们加入一个 tibble?
- javascript - 使用计时器在节点中随时间增加变量值
- html - 具有最大宽度的移动响应表
- android - Android Studio 首次安装和默认设置。“构建您的第一个应用程序”指南在首次运行时失败
- javascript - 使用 Graph API 获取用户信息返回错误
- angular - Angular GET 返回 Object 而不是 Array
- stripe-payments - Stripe API,根据位置本地化产品价格
- arraylist - 用户在数组列表中输入 10 次
- database - PRESTASHOP 无法连接到数据库:无法建立与数据库的链接:SQLSTATE [HY000] [1045]