Kotlin应为BEGIN_对象,但在第1行第2列路径处为BEGIN_数组$
嗨,我有改装和api的问题。我使用了以下api: 我添加我的身份验证密钥 这是我的带有插件kotlin数据类的模型:Kotlin应为BEGIN_对象,但在第1行第2列路径处为BEGIN_数组$,kotlin,gson,retrofit,Kotlin,Gson,Retrofit,嗨,我有改装和api的问题。我使用了以下api: 我添加我的身份验证密钥 这是我的带有插件kotlin数据类的模型: data class CatsItem( @SerializedName("adaptability") val adaptability: Int, @SerializedName("affection_level") val affectionLevel: Int, @SerializedName
data class CatsItem(
@SerializedName("adaptability")
val adaptability: Int,
@SerializedName("affection_level")
val affectionLevel: Int,
@SerializedName("alt_names")
val altNames: String,
@SerializedName("bidability")
val bidability: Int,
@SerializedName("cat_friendly")
val catFriendly: Int,
@SerializedName("cfa_url")
val cfaUrl: String,
@SerializedName("child_friendly")
val childFriendly: Int,
@SerializedName("country_code")
val countryCode: String,
@SerializedName("country_codes")
val countryCodes: String,
@SerializedName("description")
val description: String,
@SerializedName("dog_friendly")
val dogFriendly: Int,
@SerializedName("energy_level")
val energyLevel: Int,
@SerializedName("experimental")
val experimental: Int,
@SerializedName("grooming")
val grooming: Int,
@SerializedName("hairless")
val hairless: Int,
@SerializedName("health_issues")
val healthIssues: Int,
@SerializedName("hypoallergenic")
val hypoallergenic: Int,
@SerializedName("id")
val id: String,
@SerializedName("indoor")
val indoor: Int,
@SerializedName("intelligence")
val intelligence: Int,
@SerializedName("lap")
val lap: Int,
@SerializedName("life_span")
val lifeSpan: String,
@SerializedName("name")
val name: String,
@SerializedName("natural")
val natural: Int,
@SerializedName("origin")
val origin: String,
@SerializedName("rare")
val rare: Int,
@SerializedName("rex")
val rex: Int,
@SerializedName("shedding_level")
val sheddingLevel: Int,
@SerializedName("short_legs")
val shortLegs: Int,
@SerializedName("social_needs")
val socialNeeds: Int,
@SerializedName("stranger_friendly")
val strangerFriendly: Int,
@SerializedName("suppressed_tail")
val suppressedTail: Int,
@SerializedName("temperament")
val temperament: String,
@SerializedName("vcahospitals_url")
val vcahospitalsUrl: String,
@SerializedName("vetstreet_url")
val vetstreetUrl: String,
@SerializedName("vocalisation")
val vocalisation: Int,
@SerializedName("weight")
val weight: Weight,
@SerializedName("wikipedia_url")
val wikipediaUrl: String
)
以下是我的回应:
> viewModel.myResponse.observe(this, Observer { response ->
if (response.isSuccessful) {
Log.d("Response", response.body()?.id.toString())
massage.text = response.body()?.name.toString()
} else {
Log.d("Response", response.errorBody().toString())
errormassage.text = response.code().toString()
}
})
我想在textView中显示我的姓名,但我在运行应用程序时出错:
com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第2列路径处为BEGIN_数组$
我做错了什么
感谢您提供的提示和帮助从您指定的URL生成的JSON将返回一个对象数组。如果整个响应都是成功案例中
response.body()
中的响应,那么您的代码无法正确处理该响应。它假设返回的结构由单个对象而不是对象数组组成
换句话说,返回的结果如下所示:
[
{
"key1": "value1",
"key2": 1234
}
]
response.body()?.get(0).name.toString()
但您的代码期望:
{
"key1": "value1",
"key2": 1234
}
如果您不确定,为什么不打印出response.body()
的值来查看其中的内容
如果是这样的情况,修复程序将如下所示:
[
{
"key1": "value1",
"key2": 1234
}
]
response.body()?.get(0).name.toString()
对数组中的第一项进行操作。(或者类似的东西。我对Kotlin vs Java做的很少,所以可能还有另一个?
或其他东西。)