SingleObject

отаю над приложением Android, которое использует Retrofit + OkHttp для подключения к REST API и использования данных JSON. Я довольно новичок в Retrofit, так что я все еще изучаю, как это работает, но пока все прошло довольно гладко. Однако я столкнулся с необычной проблемой.

Одна из конечных точек возвращает данные, которые выглядят примерно так:

{
    "success": true,
    "data": [
        [
            {
                "field": "value1",
                ...
            },
            {
                "field": "value2",
                ...
            },
            ...
        ],
        {
           "info": "value",
           "info2": "value",
           "info3": "value",
        }
    ],
    "message": "This is the message."
}

По большей части это довольно стандартный ответ JSON. У нас есть значение «status», «message» и значение «data», содержащее важные возвращаемые данные. Однако есть проблема со структурой «данных». Как видите, это массив, но это не просто массив объектов. Его первый элемент - это массив значений, а второй -объект.

Гсону это не нравится. Если я хочу создать POJO для анализа этого с использованием Gson, я бы ожидал сделать что-то вроде этого:

public class JsonResponse {

    @SerializedName("success")
    @Expose
    boolean success;

    @SerializedName("message")
    @Expose
    String message;

    @SerializedName("data")
    @Expose
    private ArrayList<MyObject> data = new ArrayList<>();

    public ArrayList<MyObject> getData() {
        return data;
    }

    public void setData(ArrayList<MyObject> data) {
        this.data = data;
    }
}

Где «MyObject» является Parcelable, как это:

public class MyObject implements Parcelable {
      @SerializedName("field")
      @Expose
      boolean field;

      ...
}

Но это не работает, потому что «данные» - это не просто массив объектов; это массив, содержащий массив объектов и другой объект верхнего уровня.

Я могу определить «данные» как «Массив», и кажется, что он анализирует значения. Но затем они становятся общими объектами LinkedTreeMap, поэтому я теряю преимущества анализа GSON JSON-> POJO.

Есть ли элегантный способ обработки смешанного массива в Retrofit / Gson? Я не несу ответственности за данные, поступающие от API, поэтому я не думаю, что изменение будет возможным.

Ответы на вопрос(2)

Ваш ответ на вопрос