【发布时间】:2020-06-01 23:56:57
【问题描述】:
不幸的是,我从中提取的 JSON 文件有一个变量名称相同的节点,但可能随机有两种不同的数据类型。当我进行网络调用(使用 gson)时出现错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a BEGIN_ARRAY but was int at line 1 column 5344 path $[1].medium
JSON 看起来像
{
"title": "Live JSON generator",
"url": google.com,
"medium": ["chicken", "radio", "room"]
}
//However sometimes medium can be:
"medium": 259
我的序列化类看起来像:
data class SearchItem(
@SerializedName("title") var title: String,
@SerializedName("url") var urlStr: String,
@SerializedName("medium") val medium: List<String>? = null
) : Serializable {}
我进行网络调用的方式是这样的:
private val api: P1Api
fun onItemClicked(searchItem: SearchItem) {
api.getCollections { response, error ->
response.toString()
val searchItems: List<SearchItem> = Util.gson?.fromJson<List<SearchItem>>(
response.get("results").toString()
, object : TypeToken<List<SearchItem>>() {}.type)?.toList()!!
...
doStuffWithSearchItems(searchItems)
}
如何处理“medium”可以是字符串数组或 Int 的两种情况?
【问题讨论】:
标签: json kotlin types gson derivative