【问题标题】:Parse JSON attribute "data" using gson and retrofit2 in fancy way以花哨的方式使用 gson 和 retrofit2 解析 JSON 属性“数据”
【发布时间】:2019-01-20 08:39:53
【问题描述】:

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

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

为了解析这个 json,我需要创建 2 个模型类。一种是内部对象(id、价格、名称),另一种是 Data.class,它拥有一个属性——这个内部对象的列表。

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

我想要什么:

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

【问题讨论】:

    标签: android gson retrofit2


    【解决方案1】:

    我遇到了这个问题,并通过创建一个名称为 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
    );
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      相关资源
      最近更新 更多