Вложеный масив в Retrofit

143
24 сентября 2019, 16:50

Не часто работал с Retrofit-м, поэтому еще плохо знаю все. Недавно добавил в бекенд пагинацию и следовательно в клиентов изменился json ответ.

         { 
         "content":[  
                  {  
                     "id":1,
                     "date":1549549535,
                     "recipeTitle":"testMP"
                  }
               ],
               "last":true,
               "totalElements":4,
               "totalPages":1,
               "sort":[  
                  {  
                     "direction":"DESC",
                     "property":"id",
                     "ignoreCase":false,
                     "nullHandling":"NATIVE",
                     "ascending":false,
                     "descending":true
                  }
               ],
               "first":true,
               "numberOfElements":4,
               "size":100,
               "number":0
            }

Следовательно пытаюсь получить содержимое сontent. Интерфейс с запросами:

interface ReportService {
    companion object {
        operator fun invoke() : ReportService{
            val httpClient = OkHttpClient.Builder().addInterceptor(HttpLoggingInterceptor().apply {
                            HttpLoggingInterceptor.Level.BODY
            }).build()
            val retrofit = Retrofit.Builder()
                        .baseUrl("http://*****")
                        .addCallAdapterFactory(CoroutineCallAdapterFactory())
                        .addConverterFactory(GsonConverterFactory.create())
                        .client(httpClient)
                        .build()
            return retrofit.create(ReportService::class.java)
        }
    }
    @GET("reports")
    fun getReports(@Query("page") page : Int) : Deferred<List<Report>>
    @GET("reports/{id}")
    fun getReport(@Path("id") id : Long) : Deferred<Report>
}

Функция загрузки результата в репозитории:

fun getReportsList() : List<Report>? {
        var reportList : List<Report> = listOf()
        try {
            runBlocking {
                async {
                    val request : List<Report> = ReportService.invoke().getReports(0).await()
                    reportList = request
                }.await()
            }
        }catch (e : Exception){
            e.printStackTrace()
        }
        return reportList
    }

Как взять вложеный массив content?Нужно писать свою реализацию TypeAdapter<> для gson-а?

READ ALSO
Работа с полигонами в google map на андроид

Работа с полигонами в google map на андроид

У меня есть куча координат в таком виде: ((759007919, 114

167
Как самому сделать вход , не через loadUser для oauth2

Как самому сделать вход , не через loadUser для oauth2

Я не знаю почему, но вк не работает для Security 5

147
Непонятная конструкция в объектах

Непонятная конструкция в объектах

Начал не так давно изучать язык JAVAПросматривая разные туториалы и примеры программ, неоднократно сталкиваюсь с непонятными для меня конструкциями

148