Как я могу разобрать объект json, используя модификацию 2.3.0 - PullRequest
0 голосов
/ 05 мая 2018

Наша команда решает использовать Retrofit2, и я делаю некоторые начальные исследования этой библиотеки, но я новичок в Retrofit. Как разобрать Json ниже?

    {
    "main": {
    "totalResults": "500",
    "libelleCategory": "Véhilcule",
    "libelleSubCategory": "Mots et Vélos",
    "idCategory": "1",
    "idSubCategory": "3",
    "row": [
       {
            "id": "66888",
            "shortURL": "https://www.testimage.com",
            "title": "Moto - HONDA - 2007",
            "text": "Pan lorem ipsum test test c'est un test",
            "img": "https://www.test.image.com",
           "price": "6 200",
           "datePublish": "05/05/2018",
           "nbPhotos": "3",
           "address": "75001 Paris"
       },
       {
           "id": "66889",
           "shortURL": "https://www.testimage.com",
           "title": "Moto  - 2018",
           "text": "Pan lorem ipsum test test c'est un test",
           "img": "https://www.test.image.com",
           "price": "9 500",
           "datePublish": "05/05/2018",
           "nbPhotos": "5",
           "address": "75001 Paris"
       }
     ]
  }
}

Заранее спасибо

1 Ответ

0 голосов
/ 05 мая 2018

При инициализации API необходимо добавить преобразователь JSON.

Мой любимый Джексон:

  1. Добавить зависимость: com.squareup.retrofit:converter-jackson

  2. Установить преобразователь для дооснащения

    Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://your.domain")
    .addConverterFactory(JacksonConverterFactory.create()) // In real app, you should provide a preconfigured ObjectMapper for better performance
    .build();
    

Редактировать

Пример: * * один тысяча двадцать-одна

Создайте свою модель, соответствующую вашему JSON:

public class YourResponse {
    private Detail main; // This will match "main": {}

    public static final class Detail {
       private String totalResults; // This will match "totalResults": ...
       private String libelleCategory;
       private String libelleSubCategory;
       ... bla bla....
       ... your getter/setter method....
    }
    ... your getter/setter method....
}

Используйте его в классе API:

public interface SampleApi {

  @Get("/your/path/to/get")
  Call<YourResponse> getResponse();
}

Инициализируйте ваш API:

SampleApi api = new Retrofit.Builder()
                    .baseUrl("https://your.domain")
                    .addConverterFactory(JacksonConverterFactory.create()) // In real app, you should provide a preconfigured ObjectMapper for better performance
                    .build()
                    .create(SampleApi.class);

Позвоните своему API:

Response<YourResponse> serverResponse = api.getResponse().execute();
if (serverResponse.isSuccessful()) {
  YourResponse = serverResponse.body();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...