预期 BEGIN_OBJECT 但在路径 $[0] 处是字符串
Expected BEGIN_OBJECT but was string at path $[0]
我尝试从 link 解析 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 文件并制作了一个字典,但得到了同样的错误。我能做什么?
改变
fun getAllDomains(): Call<List<Domain>>
至
fun getAllDomains(): Call<List<String>>
因为 api return 字符串列表不是对象 https://i.imgur.com/dB1lU4q.jpg
您的 API 正在返回字符串数组,但您正在获取域对象数组。
变化:
Call<List<Domain>>
至
Call<List<String>>
会起作用。
我尝试从 link 解析 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 文件并制作了一个字典,但得到了同样的错误。我能做什么?
改变
fun getAllDomains(): Call<List<Domain>>
至
fun getAllDomains(): Call<List<String>>
因为 api return 字符串列表不是对象 https://i.imgur.com/dB1lU4q.jpg
您的 API 正在返回字符串数组,但您正在获取域对象数组。
变化:
Call<List<Domain>>
至
Call<List<String>>
会起作用。