我的答复是:
{
"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;
}
}
如何正确反序列化错误?
答案 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
,其中包含data
,meta
和errors
。
因此,您不能在问题中传递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();