我正在尝试序列化下面的json响应,但是我不确定如何做。
这是我的后端返回的Json:
[
{
"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 = ""
)
现在,我尝试在存储库中将其序列化,如下所示:
Serializer.defaultJsonParser.fromJson(response.body!!.string(),ExploreItem::class.java )
但是它不工作,因为它需要一个ExploreItem列表。如何重写序列化器表达式以将其解析为列表呢?
1条答案
按热度按时间wn9m85ua1#
从你的错误
类型不匹配。必需:找到列表:ExploreItem!
发布错误是非常重要的,Gson告诉你它想要一个List,而不是
ExploreItem
的对象。换句话说,您将通过调用
Serializer.defaultJsonParser.fromJson(response.body!!.string(),ExploreItem::class.java )
告诉Gson“嘿,Gson,从字符串中我想要一个对象
ExploreItem
“,Gson告诉你“嘿,我的朋友,你的字符串以[ ]
开头,这肯定是一个列表,而不是一个单一的对象。”您需要传入
Serializer.defaultJsonParser.fromJson(response.body!!.string(),List<ExploreItem>::class.java)
附言:我不确定Kotlin语法