Как я могу запросить определенные элементы JSON, используя Retrofit? - PullRequest
0 голосов
/ 27 января 2019

Я использую Retrofit для сбора и анализа JSON данных, которые я создал и загрузил в Интернет.Я могу успешно отобразить все данные, но, будучи новичком в Retrofit, я пытаюсь понять, как запрашивать и отображать определенные элементы из данных JSON.

Мне удается отобразить все данные JSON, используяinterface:

@GET("d6jww")
Call<List<RetrofitVariables>> findPosts();

в методе onResponse() из Retrofit.Но что, если я только хочу отобразить, скажем, имена или идентификатор объекта JSON.Как я могу запросить это?

Я пытался:

@GET("d6jww")
Call<List<RetrofitVariables>> getId(
        @Query( "id" )
                String id);

и:

@GET("d6jww")
Call<List<RetrofitVariables>> getId(
        @Query("SELECT * FROM id")
                String id);

Но в моем ViewModel Android-Studio хочет, чтобы я добавил аргумент при использовании interfaceи я, честно говоря, не знаю, как его использовать:

public Call<List<RetrofitVariables>> getRepositoryId() {
    return this.repository.getRetrofitRepository().getId( ??? );
}

Мой JSON выглядит так:

[
    {"id":231, "name": "Bob", "date":"3/13/2015",     
    "from":"8:00","until":"13:00"},

    {"id":232, "name": "Joe", "date":"1/3/2015",   
    "from":"12.30","until":"13:00"}
]

Подводя итог моим вопросам:

  1. Могу ли я запросить JSON напрямую или мне сначала нужно поместить его в Room и запросить оттуда?

  2. Если я могу запросить JSON напрямую, как мне структурировать интерфейс (для сбора имен или идентификатора)?А что с отсутствующим аргументом?

  3. Как запросить конкретные имена?Например, если я хочу спросить, есть ли Боб в данных JSON, как мне настроить этот интерфейс?

Заранее большое спасибо:)

1 Ответ

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

Это не совсем то, что вы хотели бы сделать, но в любом случае.

Для этого:

  1. Если я могу напрямую запросить JSON, как мне структурировать интерфейс (для сбора имен или идентификатора)? А что с отсутствующим аргументом?

и комментарий:

Итак, нет (хорошего) способа извлечь определенные части непосредственно из данных JSON?

Вы не можете влиять на то, что возвращает сервис, но вы можете выбрать то, что выберете. Скажем, у вас есть такой тип DAO обычно (полный пост - или это человек? - данные):

public class Post {
    private String id;
    private String name;
    private String date;
    private String from;
    private String until;
}

и обычно у вас может быть что-то вроде (не обязательно, а в качестве примера):

@GET("d6jww")
Call<List<Post>> findPosts();

Чтобы ограничить данные только некоторыми полями, вы можете объявить новый DAO для них. как:

@Getter @Setter
public class PostId {
    private String id;
}

и новый метод API, указывающий ту же конечную точку:

@GET("d6jww")
Call<List<PostId>> getPostIds();

Но в любом случае вам нужно выполнить фильтрацию на стороне клиента.

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