【发布时间】:2020-01-02 06:12:10
【问题描述】:
我在将 JSON 解析为泛型函数中的数据类时遇到错误No JsonAdapter for R,我研究并尝试了很多方法,但仍然无法正常工作。
问题是generic function 不知道泛型参数R 的实际类型是什么,所以我无法在解析时手动分配R 的类型。
我该如何解决这个问题? :(
fun <T, R> sendRequest(msg: Deribit.Request.Message<T>): Deribit.Response.Result<R> {
...
val type = object : TypeToken<Deribit.Response.Result<R>>() {}.type
return moshi.adapter<Deribit.Response.Result<R>>(
type
).fromJson(jsonElement.toString())
...
}
我也使用了返回 ParameterizedTypeReference 的 reified 函数,但它仍然无法正常工作
private inline fun <reified T: Any> typeRef(): ParameterizedTypeReference<T> = object: ParameterizedTypeReference<T>(){}
...
// USAGE
val data = moshi.adapter<Deribit.Response.Result<R>>(
typeRef<Deribit.Response.Result<R>>().type
).fromJson(jsonElement.toString())
谢谢你和最好的问候!!!
【问题讨论】: