как разобрать JSON с помощью Retrofit2 и его вариантов использования - PullRequest
0 голосов
/ 19 июня 2020

У меня есть JSON, чтобы получить данные списка в основном действии с помощью RecyclerView (вы можете увидеть json в https://myproject.masuk.id/api/kelas для списка данных)

{
"message": "Success",
"data": [
    {
        "id": 5,
        "nama_kelas": "GSG 207",
        "lokasi": "Gedung Serba Guna",
        "kapasitas": "30"
    },
    {
        "id": 6,
        "nama_kelas": "AA 308",
        "lokasi": "Gedung Mamang",
        "kapasitas": "35"
    }
]
}

Когда я щелкните один из данных в Основном действии, я хочу перейти к подробному действию и проанализировать spesifi c JSON (получить по идентификатору). Как показано ниже: (вы можете увидеть json в https://myproject.masuk.id/api/kelas/5 для получения подробной информации)

{
"message": "Success",
"data": {
    "id": 5,
    "nama_kelas": "GSG 207",
    "lokasi": "Gedung Serba Guna",
    "kapasitas": "30",
    "barang": [
        {
            "id": 7,
            "id_kelas": "5",
            "namabarang": "Papan Tulis",
            "kondisi": "Baru",
            "jumlah": "1",
            "sumber": "pemerintah",
            "tglmasuk": "2020-06-03",
            "tglkeluar": "2020-06-07",
            "created_at": "2020-06-09T06:18:09.000000Z",
            "updated_at": "2020-06-09T06:18:09.000000Z"
        },
        {
            "id": 8,
            "id_kelas": "5",
            "namabarang": "Meja",
            "kondisi": "Baru",
            "jumlah": "30",
            "sumber": "pemerintah",
            "tglmasuk": "2020-06-02",
            "tglkeluar": "2020-06-05",
            "created_at": "2020-06-09T06:18:37.000000Z",
            "updated_at": "2020-06-09T06:18:37.000000Z"
        }
    ]
}
}

Может ли кто-нибудь предоставить мне аналогичный случай с использованием модернизации?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

С официального сайта Retrofit на github:

По умолчанию Retrofit может десериализовать HTTP-тела только в тип ResponseBody OkHttp и может принимать только свой тип RequestBody для @ Body.

Конвертеры могут быть добавлены для поддержки других типов. Шесть родственных модулей адаптируют популярные библиотеки сериализации для вашего удобства.

Gson: com.squareup.retrofit2: converter-gson

Итак, вам понадобится ConverterFactory для анализа вашего данные от JSON до Java Object

Сначала добавьте convertor-gson библиотеку в ваше приложение / buid.gradle

implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

Затем, когда вы создадите Retrofit instance

new Retrofit.Builder()
    .baseUrl("BASE_URL")
    .addConverterFactory(GsonConverterFactory.create())
    .build();

Вы можете найти больше на их github

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

0 голосов
/ 19 июня 2020

Конечно, вам просто нужно использовать выбранный вами десериализатор. Для простоты разработки и первого шага я предпочитаю GSON, потому что он очень прост в использовании:

https://futurestud.io/tutorials/retrofit-2-adding-customizing-the-gson-converter

{ ссылка }

https://github.com/square/retrofit/tree/master/retrofit-converters/gson

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