【发布时间】:2017-12-26 06:23:57
【问题描述】:
我知道这是老问题或重复问题。但我没有明白我错在哪里。 我从这个 JSON 得到了 null 的结果。
{
"error": {
"dateTimeUtc": "2017-12-26T05:46:05.1126801+00:00",
"errorReference": "sample string 2",
"errorType": "Error",
"title": "sample string 3",
"code": "sample string 4",
"messages": [
"sample string 1",
"sample string 2"
]
},
"result": {
"message": "sample string 1"
}
}
我有这种类型的 JSON 可以从 Retrofit2 中读取。 我创建了一个名为 RetrofitResponce
的 POJO 类private Error error;
private Result result;
public Result getResult ()
{
return result;
}
public void setResult (Result result)
{
this.result = result;
}
public Error getError ()
{
return error;
}
public void setError (Error error)
{
this.error = error;
}
@Override
public String toString()
{
return "ClassPojo [result = "+result+", error = "+error+"]";
}`
现在在 call.enque() 方法中处理响应,比如
call.enqueue(new Callback<RegisterUser>() {
@Override
public void onResponse(Call<RetrofitResponce> call, Response<RetrofitResponce> response) {
try {
RetrofitResponce retrofitResponce= response.body();
Error error = retrofitResponce.getError();
Result result=retrofitResponce.getResult();
Log.e("Eroor", "rr " + error.getTitle().toString());
} catch (Exception e) {
}
}
@Override
public void onFailure(Call<RetrofitResponce> call, Throwable t) {
Log.e("Failure ", "fail " + t.toString());
}
});
但在这里我得到 NullPointerException,即我在 RestrofitResponce 中没有得到任何回应。 Error 和 Result 都为 Null。
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“net.xyz.abc.Model.Error net.xyz.abc.Model.RegisterUser.getError()”
请帮助我。尝试解决我的问题。提前致谢。
邮递员回应,
{
"error": {
"dateTimeUtc": "2017-12-26T07:05:51.1427712Z",
"errorReference": "00000000-0000-0000-0000-000000000000",
"errorType": "Error",
"title": "The request is invalid.",
"code": null,
"messages": [
"Passwords must have at least one non letter or digit character. Passwords must have at least one uppercase ('A'-'Z')."
]
},
"result": null
}
【问题讨论】:
-
@Rohit,这是成功和失败响应还是成功响应与此不同?
-
我在 PostMan 软件上测试了相同的 URL。我在那里取得了成功。
-
请同时发布成功响应和失败响应。
-
你得到了 null 因为可能是你的成功响应和失败响应都不同。
标签: android json retrofit2 pojo