如何使用 retorfit2 创建用于解析 Json 的通用模型类?

Posted

技术标签:

【中文标题】如何使用 retorfit2 创建用于解析 Json 的通用模型类?【英文标题】:How to create universal model class for parsing Json with retorfit2? 【发布时间】:2021-11-13 23:40:54 【问题描述】:

所有 API 响应的 json 结构体都是这样的: “数据”: ... , “元”: ...

但所有 API 在 datameta 中都有不同的嵌套 json。我需要制作通用父 json 模型类。这是我的情况:

class FirstJsonModel
    
    @SerializedName("data")
    var data: FirstData? = null

    @SerializedName("meta")
    var meta: FirstMeta? = null


class FirstData 



class FirstMeta 




class SecondJsonModel 
    
    @SerializedName("data")
    var data: SecondData? = null

    @SerializedName("meta")
    var meta: SecondMeta? = null


class SecondData 



class SecondMeta 


【问题讨论】:

你能提供一些关于你的问题的细节吗?到目前为止,您尝试过什么? 【参考方案1】:

考虑到您共享的代码,您可以使用泛型类来实现这一点 -

class ApiResponseModel<T> 
     @SerializedName("data")
     var data: T? = null

class ApiResponseModel<T1, T2> 
     @SerializedName("data")
     var data: T1? = null

     @SerializedName("meta")
     var meta: T2? = null

如果你想使用 is for Data Classes 你可以做这样的事情 -

data class ApiResponseModel<T1, T2> (
     @SerializedName("data")
     var data: T1? = null,

     @SerializedName("meta")
     var meta: T2? = null
)

希望这会有所帮助!

【讨论】:

【参考方案2】:

使用泛型类

data class Hello<D,M>(
  @SerializedName("data")
  var data: D? = null,

  @SerializedName("meta")
  var meta: M? = null
)

【讨论】:

以上是关于如何使用 retorfit2 创建用于解析 Json 的通用模型类?的主要内容,如果未能解决你的问题,请参考以下文章

javascript的JSON对象

Android解析json-Gson使用

QJsonObject如何创建函数

java后台配置信息如何传递到前端jsp页面

spring boot常用的注解

如何生成和解析json格式数据