我在Retrofit2中遇到JSON问题。我的JSON中有一个String作为第一个参数,而不是一个对象。
在Java中,一个Java对象可以读取这种JSON,但是我没有找到Kotlin的解决方案。
@GET("currency")
fun getCurrentCurrency(
@Query("base") base: String,
@Query("target") target: String
): Deferred<Currency>
Json:
{
"base": "USD",
"last_update": "2018-12-10T15:10:58.253Z",
"rates": {
"EUR": 0.8769574627,
"GBP": 0.7914459201
},
"status": 200,
"target": "EUR,GBP"
}
班
data class Currency(
var base: String,
@SerializedName("last_update")
var lastUpdate: String,
var rates: Rates,
var status: Int,
var target: String)
您可以在JSON中看到我没有Currency对象。第一个参数是字符串。如何在Kotlin中阅读此书?
答案 0 :(得分:0)
尝试使用此版本:
data class Currency(
@SerializedName("base")
val base: String,
@SerializedName("last_update")
val lastUpdate: String,
@SerializedName("rates")
val rates: Rates,
@SerializedName("status")
val status: Int,
@SerializedName("target")
val target: String
)
data class Rates(
@SerializedName("EUR")
val eUR: Double,
@SerializedName("GBP")
val gBP: Double
)
答案 1 :(得分:0)
这是我的错误的答案:
val builder = GsonBuilder().setLenient().create() //This line of the code is a key return Retrofit.Builder() .client(okHttpClient) .baseUrl("https://api.currencystack.io/") .addCallAdapterFactory(CoroutineCallAdapterFactory()) .addConverterFactory(GsonConverterFactory.create(builder)) .build() .create(CurrencyApi::class.java)