使用花哨的方式使用gson和retrofit2解析JSON属性“数据”

时间:2019-01-20 08:39:53

标签: android gson retrofit2

好吧,当我需要使用带有Retrofit2的GSON解析json时,我在模型类中看到了很多样板代码。我想知道如何处理它,因为我很确定有一种方法可以使它看起来更优雅。

{
  "data": [
    {
      "id": 2,
      "price": 56,
      "name": "Hello"
    }
  ]
}

要解析此json,我需要创建2个模型类。一个用于内部对象(id,价格,名称),一个用于Data.class,它具有一个属性-此内部对象的列表。

内部可以有不同的内部对象是完全可以的,但是稍后您将拥有许多“ Data.class”,其中有一个属性“ data”(即List),但是内部对象类型不同。如何在我的项目中避免这种样板数据类似的类?

我想要的东西:

每当我创建新的“内部”对象模型类时,都不会使用具有“数据”属性的属性来更改内部对象类型的新数据类。

1 个答案:

答案 0 :(得分:0)

我遇到了这个问题,并通过创建一个名称为BaseResponse的抽象类来解决此问题

public abstract class BaseResponseInterface2<T> {

    @SerializedName("data")
    private List<T> data;

    public List<T> getData() {
        return data;
    }

    public void setData(List<T> data) {
        this.data = data;
    }
}

并在api服务界面中像这样使用

@GET("/api/")
Call<BaseResponseInterface2<innerClass>> getResponse(
        @Path("id") int id
);

希望有帮助