Как я могу разобрать ошибки с помощью GSON? - PullRequest
0 голосов
/ 28 ноября 2018

Мой ответ:

{
    "data":[],
    "meta":[],
    "errors":[["invalid credentials"]]
}   

Я не могу десериализовать его следующим способом:

Errors errors = gson.fromJson(response, new TypeToken<Errors>(){}.getType());

Ошибки

public class Errors {
    private HashMap<String, Object> errors;

    public HashMap<String, Object> getErrors() {
        return errors;
    }
}

Как правильно десериализовать ошибки?

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

В вашем примере Errors - это не Hashmap, это массив массивов.Измените класс на этот и посмотрите, работает ли он или нет.

public class Errors {

  private List<List<String>> errors;

  public List<List<String>> getErrors() {
     return errors;
  }

}
0 голосов
/ 28 ноября 2018

Вы десериализуете - не ошибки, а ответ с этими ошибками.Там JSON представляет объект скажем Response, который содержит data, meta & errors.

Так что вы не можете не передать JSON в своем вопросе и ожидать, что он будет десериализован в качестве экземпляраErrors.Вместо этого вам нужен DTO, соответствующий вашей строке ответа JSON.Это может быть как:

@Getter @Setter
public class Response {
    // You can comment/remove data & meta
    // if you do not need then
    private List<?> data;
    private List<?> meta;
    private List<List<String>> errors;
}

Десериализовать как:

Response res = new Gson().fromJson(YOUR_JSON, Response.class);

и получить ошибки вроде:

res.getErrors();
0 голосов
/ 28 ноября 2018

Попробуйте этот код

    Errors errors=new Gson().fromJson("here your error data",Errors.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...