Kotlin 预期 BEGIN_OBJECT 但在第 1 行第 2 列路径 $ 处 BEGIN_ARRAY
Kotlin Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
您好,我对改装和 api 有疑问。我从中使用了 api :
https://api.thecatapi.com/v1/breeds 我添加我的授权密钥
这是我的带有插件 kotlin 数据的模型 class:
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 中显示品种名称,但是当我 运行 app:
时出现错误
com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期 BEGIN_OBJECT 但在第 1 行第 2 列路径 $
BEGIN_ARRAY
我做错了什么?
感谢任何提示和帮助
结果JSON 来自URL 你指示的returns 对象数组。如果整个响应是成功案例中 response.body()
中的内容,那么您的代码无法正确处理该响应。假设返回的结构由单个对象而不是对象数组组成。
也就是说,返回的结果是这样的:
[
{
"key1": "value1",
"key2": 1234
}
]
但您的代码需要:
{
"key1": "value1",
"key2": 1234
}
如果您不确定,为什么不打印出 response.body()
的值以查看其中的内容?
如果是这种情况,修复方法如下所示:
response.body()?.get(0).name.toString()
对数组中的第一项进行操作。 (或者类似的东西。我对 Kotlin 和 Java 做的很少,所以也许那里还有另一个 ?
之类的东西。)
您好,我对改装和 api 有疑问。我从中使用了 api : https://api.thecatapi.com/v1/breeds 我添加我的授权密钥
这是我的带有插件 kotlin 数据的模型 class:
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 中显示品种名称,但是当我 运行 app:
时出现错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期 BEGIN_OBJECT 但在第 1 行第 2 列路径 $
BEGIN_ARRAY我做错了什么?
感谢任何提示和帮助
结果JSON 来自URL 你指示的returns 对象数组。如果整个响应是成功案例中 response.body()
中的内容,那么您的代码无法正确处理该响应。假设返回的结构由单个对象而不是对象数组组成。
也就是说,返回的结果是这样的:
[
{
"key1": "value1",
"key2": 1234
}
]
但您的代码需要:
{
"key1": "value1",
"key2": 1234
}
如果您不确定,为什么不打印出 response.body()
的值以查看其中的内容?
如果是这种情况,修复方法如下所示:
response.body()?.get(0).name.toString()
对数组中的第一项进行操作。 (或者类似的东西。我对 Kotlin 和 Java 做的很少,所以也许那里还有另一个 ?
之类的东西。)