Динамический отклик от дооснащения Json до Gson Android Kotlin / Java - PullRequest
0 голосов
/ 07 января 2019

У меня динамический формат JSON из остальных API, как это:

{
    "data": {
        "response_code": "success",
        "value": {
            "Table": [
                {
                    "id": 5,
                    "username": "blahblah",
                    "password": "blahblah",
                    "role": 2,
                    "email": "blah@tes.com",
                    "tanggal_buat": "2019-01-01T00:00:00"
                }
            ]
        }
    },
    "meta": {
        "http_status": 200
    }
}

Объект "value" имеет имя массива объектов "Table". Таблица может содержать значения из моей базы данных, динамически зависеть от моего запроса. Так, иногда формат json будет меняться, например:

{
    "data": {
        "response_code": "success",
        "value": {
            "Table": [
                {
                    "id_product": 44,
                    "product": "blahblah",
                    "lot": "blahblah",
                    "qty": 2,
                }
            ]
        }
    },
    "meta": {
        "http_status": 200
    }
}

Как принять значение json и назначить gson напрямую с другим подклассом "Table"

Я пробую его в модификации и использую kotlin

override fun onResponse(call: Call<MainResp>, response: Response<MainResp>) {
                    mainResponse : MainResp = response.body()
                }

1 Ответ

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

Предполагая, что у вас есть следующий класс среди других (используя sth вроде http://www.jsonschema2pojo.org/):

class Value {
    List<Table> tables;
}

Класс «Таблица» здесь не может быть абсолютно случайным!
Вам нужно будет определить возможные типы «Таблицы», например, Таблица1, Таблица2 ... ТаблицаN.

Теперь вы можете обновить Value класс универсальным типом T вместо Table и написать свой адаптер нестандартного типа:

class Value {
    List<T> tables;
} 

Одним из руководств по написанию собственного адаптера типа является здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...