如何创建通用模型 class 以使用 retorfit2 解析 Json?

How to create universal model class for parsing Json with retorfit2?

所有 API 响应 json 构造器如下: { “数据”:{ ... }, “元”:{ ... } }

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

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 {

}

考虑到您共享的代码,您可以使用通用 class 来实现此目的 -

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 类 你可以这样做 -

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

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

希望对您有所帮助!

使用通用 class

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

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