我正在使用一个 API,它的属性可以有不同的类型
属性可以是 Ids 或 Objects
我想构建一个通用类型,通过 Gson 序列化为我处理这个问题。
例子:
"platforms": [
6
]
"platforms": [
{
"id": 6,
"name": "PC (Microsoft Windows)",
"slug": "win",
"url": "https://www.igdb.com/platforms/win",
"created_at": 1297639288000,
"updated_at": 1470063140518,
"website": "http://windows.microsoft.com/",
"alternative_name": "mswin"
}
]
我正在使用 Kotlin 并已开始构建我的 Generalizable 课程
data class ObjectType<T>(
var Id: Long? = null,
var expand: T? = null
)
我目前正忙于构建我的 JsonDeserializer,因为它需要返回 T 类型,在我的情况下,它既可以是 Int 也可以是 Object。我试图用“更好”的 ObjectType 替换 T,但无法处理 JSON 是数组时的情况。
我目前正在尝试使其仅与通用类型 T 一起使用,因为我可以将类型设置为 List> 。
当前实施:
class ObjectDeserializer<T> : JsonDeserializer<T> {
override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): T {
if (json != null) {
if (json.isJsonArray) {
val struct: T = Gson().fromJson(json, T::class.java) as T
return struct
} else {
val id = Gson().fromJson(json, Long::class.java)
//return ObjectType(id, null)
}
}
return T as T
}
}
我很想就如何解决这个问题提供一些意见。