You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android调用Dog Ceo API报错:期望数组起始符'['却遇到EOF

问题分析与解决方案

你的核心问题是Retrofit接口声明的返回类型和API实际返回的JSON结构不匹配:

  • API返回的是一个单个JSON对象(外层为{}),包含message数组和status字段
  • 但你的DogsApi接口却声明返回List<Dog>(数组类型),导致Kotlin Serialization试图把对象解析成数组,触发解码错误。

修复步骤

1. 修正Retrofit接口的返回类型

把接口的返回值从List<Dog>改为Dog,匹配API返回的单个对象结构:

interface DogsApi {
    @GET("hound/images")
    suspend fun dogApi(): Dog
}

2. 确认Retrofit配置正确性

确保你已经正确添加了Kotlin Serialization转换器,并且baseUrl设置正确(需包含https://dog.ceo/api/breeds/):

import kotlinx.serialization.json.Json
import okhttp3.MediaType.Companion.toMediaType
import retrofit2.Retrofit
import retrofit2.converter.kotlinx.serialization.asConverterFactory

val retrofit = Retrofit.Builder()
    .baseUrl("https://dog.ceo/api/breeds/")
    .addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
    .build()

3. 正确处理接口返回数据

调用接口后,直接从返回的Dog对象中提取图片URL列表:

// 示例调用(建议在协程中执行)
val dogsApi = retrofit.create(DogsApi::class.java)
val dogResponse = dogsApi.dogApi()
val imageUrls = dogResponse.image // 获取到图片URL列表,可用于Coil加载

内容的提问来源于stack exchange,提问作者Maxi Pelizzoni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:17:09