如何使用GSON解析错误?

时间:2018-11-28 13:18:46

标签: java android json gson

我的答复是:

{
    "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 :(得分:1)

尝试此代码

    Errors errors=new Gson().fromJson("here your error data",Errors.class);

答案 1 :(得分:1)

在您的示例中,Errors不是Hashmap,它是一个数组数组。 将类更改为此,然后查看它是否起作用。

public class Errors {

  private List<List<String>> errors;

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

}

答案 2 :(得分:0)

您正在反序列化-不是错误-而是包含这些错误的响应。 JSON表示一个对象Response,其中包含datametaerrors

因此,您不能在问题中传递JSON并期望将其反序列化为Errors的实例。相反,您需要一些与您的JSON响应字符串匹配的DTO。可能是这样的:

@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();