【问题标题】:How to create universal model class for parsing Json with retorfit2?如何使用 retorfit2 创建用于解析 Json 的通用模型类?
【发布时间】: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 {

}

【问题讨论】:

  • 你能提供一些关于你的问题的细节吗?到目前为止,您尝试过什么?

标签: android json retrofit2


【解决方案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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多