Разбор атрибутов JSON «data» с использованием gson и retrofit2 - PullRequest
0 голосов
/ 20 января 2019

Ну, я видел много шаблонного кода в моих модельных классах, когда мне нужно проанализировать json, используя GSON с Retrofit2. Я хотел бы узнать, как с этим справиться, потому что я почти уверен, что есть способ сделать это более элегантным.

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

Для разбора этого json мне нужно создать 2 класса моделей. Один будет для внутреннего объекта (id, цена, имя), а другой будет Data.class, который содержит один атрибут - список этого внутреннего объекта.

Совершенно нормально иметь разные внутренние объекты внутри, но позже у вас будет много «Data.class», у которого есть один атрибут «data», который является List, но с другим типом внутреннего объекта. Как я могу избежать подобных классов данных двойников в моих проектах?

Что я хочу:

ЗАПРЕЩАЕТСЯ создавать новый класс данных с атрибутом «data», меняющим тип внутреннего объекта всякий раз, когда я создаю новый «внутренний» класс объектной модели.

1 Ответ

0 голосов
/ 20 января 2019

У меня была эта проблема, и я исправил ее с помощью создания одного абстрактного класса с именем 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
);

Надеюсь, это поможет

...