Gson使用嵌套泛型解析对象

时间:2020-08-26 21:46:51

标签: kotlin generics gson

在我的应用中,我使用BaseResponse类,该类是所有其他网络响应类的父类。

open class BaseResponse(

        var status: String = "success",
        var errors: ArrayList<String>? = null
)

例如,我在我的应用程序中有模型User,并且包含Users类对象的响应看起来是这种方式

class User(val id: Int, val name: String)

class ResponseUser(
        @SerializedName("data")
        val data: User
) : BaseResponse()

这是我用来将json字符串解析为ResponseUser对象的示例代码

fun parsingToRespUser()
{
    val str_reponse = """{"status": "success","errors":null,"data": {"id": 1,"name": "Philipp"}}""""
    val user: ResponseUser = Gson().fromJson(str_reponse, ResponseUser::class.java)
}

所以我的问题是:是否可以用通用的数据字段创建通用的BaseResponse类,并将其以正确的方式进行解析?像这样

class BaseResponseWithData<T>(
        @SerializedName("data")
        val data: T
):BaseResponse()

fun parsingToRespUser()
{
    val str_reponse = """{"status": "success","errors":null,"data": {"id": 1,"name": "Philipp"}}""""
    val user: BaseResponseWithData<ModelUser> = Gson().fromJson(str_reponse, BaseResponseWithData::class.java)
}

0 个答案:

没有答案