【发布时间】:2021-06-09 11:00:41
【问题描述】:
我尝试从链接中解析 JSON。这是我的代码
private const val BASE_URL = "https://raw.githubusercontent.com/"
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
private val retrofit = Retrofit.Builder()
.addConverterFactory(MoshiConverterFactory.create(moshi))
.baseUrl(RetrofitUtil.BASE_URL)
.build()
interface DomainsApiService {
@GET("Maximsiomin/DomainsAPI/master/domains_list.json")
fun getAllDomains(): Call<List<Domain>>
}
object DomainsAPI {
val retrofitService: DomainsApiService by lazy { retrofit.create(DomainsApiService::class.java) }
}
data class Domain(
@Json(name = JSON.DOMAIN) val domain: String
)
我在这里处理 JSON:
fun getDomainsList(domain: String, context: Context) {
DomainsAPI.retrofitService.getAllDomains().enqueue( object: Callback<List<Domain>> {
override fun onFailure(call: Call<List<Domain>>, t: Throwable) {
Timber.d("onFailure called")
Toast.makeText(context, "Error: " + t.message, Toast.LENGTH_LONG).show()
}
override fun onResponse(call: Call<List<Domain>>, response: Response<List<Domain>>) {
Timber.d("onResponse called")
_response.value = response.body()?.size.toString()
}
})
}
但是我的 Toast 出现错误“预期 BEGIN_OBJECT 但在路径 $[0] 处是字符串”。我试图编辑 json 文件并制作了一个 dict,但得到了同样的错误。我能做什么?
【问题讨论】:
-
您的数据是字符串数组,而不是
Domain对象数组。
标签: android kotlin retrofit2 moshi