预期BEGIN_OBJECT但被BEGIN_ARRAY"在 Kotlin 中使用 Gson



我正在尝试从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,
)

最新更新