Gson使用kotlin反序列化json响应期间的类型不匹配
我正在尝试序列化下面的json响应,但我不确定如何做 这是我的后端返回的Json:Gson使用kotlin反序列化json响应期间的类型不匹配,kotlin,gson,Kotlin,Gson,我正在尝试序列化下面的json响应,但我不确定如何做 这是我的后端返回的Json: [ { "title": "Dummy section, should not be seen", "type": "dummy_test", "metadata": [] }, { "title": "Title1",
[
{
"title": "Dummy section, should not be seen",
"type": "dummy_test",
"metadata": []
},
{
"title": "Title1",
"type": "categories_products",
"metadata": [
{
"id": "1272"
}
]
},
{
"title": "Title2",
"type": "categories_products",
"metadata": [
{
"id": "996"
}
]
}
]
这是我的ExploreItem课程:
data class ExploreItem(
@SerializedName("metadata") val metadata: List<Metadata> = listOf(),
@SerializedName("title") val title: String = "",
@SerializedName("type") val type: String = ""
) {
enum class ExploreItemType(val value: String) {
@SerializedName("unknown")
UNKNOWN("unknown"),
@SerializedName("other_companies")
OTHER_COMPANIES("other_companies"),
@SerializedName("categories_products")
CATEGORIES_PRODUCTS("categories_products"),
@SerializedName("popular_categories")
POPULAR_CATEGORIES("popular_categories")
}
}
data class Metadata(
@SerializedName("id") val id: String = ""
)
但它不起作用,因为它需要一个ExploreItem列表。如何重写序列化程序表达式以将其解析为列表?来自您的错误
类型不匹配。必需:找到的列表:exploreeItem
Post错误非常重要,Gson告诉您它需要的是一个列表,而不是ExploreItem
的对象
换句话说,通过调用Serializer.defaultJsonParser.fromJson(response.body!!.string(),ExploreItem::class.java)告诉Gson
“嘿,Gson,从字符串我想要一个对象ExploreItem
”,Gson告诉你“嘿,我的朋友,你的字符串从[]
开始,确定它是一个列表,而不是一个对象。”
您需要传入Serializer.defaultJsonParser.fromJson(response.body!!.string(),List::class.java)
附言:我不确定Kotlin的语法是否与您的错误相符
类型不匹配。必需:找到的列表:exploreeItem
Post错误非常重要,Gson告诉您它需要的是一个列表,而不是ExploreItem
的对象
换句话说,通过调用Serializer.defaultJsonParser.fromJson(response.body!!.string(),ExploreItem::class.java)告诉Gson
“嘿,Gson,从字符串我想要一个对象ExploreItem
”,Gson告诉你“嘿,我的朋友,你的字符串从[]
开始,确定它是一个列表,而不是一个对象。”
您需要传入Serializer.defaultJsonParser.fromJson(response.body!!.string(),List::class.java)
注意:我不确定Kotlin语法是什么堆栈跟踪是什么?类型不匹配。必需:找到的列表:exploreeItem!这就是序列化程序行显示的错误堆栈跟踪是什么?类型不匹配。必需:找到的列表:exploreeItem!这就是序列化程序行显示的错误
Serializer.defaultJsonParser.fromJson(response.body!!.string(),ExploreItem::class.java )