Преобразование пары ключ-значение JSON в объект Java с использованием Retrofit, когда один из ключей в json содержит список значений - PullRequest
0 голосов
/ 02 марта 2020

Я учусь делать вызовы API в Android через Retrofit и застрял из-за преобразования объектов JSON в java с использованием библиотеки Retrofit. Я объяснил проблему подробно, как показано ниже. Если кто-то может помочь, я был бы очень благодарен.

У меня есть следующий JSON в ответ на мой API ---

[
  {
   "key1": "value1",
   "key2": "value2",
   "key3": "["v1", "v2", "v3"]"
  }
]

В android среде, я используя модернизацию для звонков в API. Я сделал следующее POJO ----

public class apiResponsePOJO implements Serializable {
    @SerializedName("key1")
    @Expose
    private String key1;

    @SerializedName("key2")
    @Expose
    private String key2;

    @SerializedName("key3")
    @Expose
    private List<String> key3;

    // I have created the getter and setter methods for all the three attributes.
}

Класс APIInterface содержит следующее определение метода GET -

    @GET("attribute/")
    Call<apiResponsePojo> getAttribute(@Query("attributeID") Integer attributeID);

Я вызываю интерфейс API в одном из класса фрагмента следующим образом -

    APIInterface apiInterface = APIClient.getClient(url).create(APIInterface.class);
    getAttributeDetails(attributeID);

Определение метода getAttributeDetails выглядит следующим образом -

public void getAttributeDetails(int attributeID) {
        Call<apiResponsePOJO> call = apiInterface.getAttribute(attributeID);
        call.enqueue(new Callback<apiResponsePOJO>() {
            @Override
            public void onResponse(Call<apiResponsePOJO> call, Response<apiResponsePOJO> response) {
                apiResponseDetails = response.body();

                Log.e("Server", "response = " + apiResponseDetails.getValue1());
            }

            @Override
            public void onFailure(Call<apiResponsePOJO> call, Throwable t) {

                Log.e("Server", t.getMessage());
//              t.printStackTrace();
            }
        });
    }

Я получаю сообщение об ошибке: Неопределенный объект в строке 15, путь 20, столбец 20 $ .key3

Может ли кто-нибудь объяснить мне, почему это происходит?

1 Ответ

0 голосов
/ 02 марта 2020

Ваш ответ в неправильном формате, key3 является JSONArray, поэтому без кавычек

должно быть:

[ { "key1": "value1", "key2": "value2", "key3": ["v1", "v2", "v3"] } ]

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