gpt4 book ai didi

android - 在改造 2.0 中处理 JSON 响应

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:55 25 4
gpt4 key购买 nike

我知道这是老问题或重复问题。但我不知道我哪里错了。我从这个 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: Attempt to invoke virtual method 'net.xyz.abc.Model.Error net.xyz.abc.Model.RegisterUser.getError()' on a null object reference

请帮帮我。尝试解决我的问题。提前致谢。

postman 响应,

{
"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

最佳答案

Retrofit callback需要response model,改成这样:

call.enqueue(new Callback<RetrofitResponce>() {
@Override
public void onResponse(Call<RetrofitResponce> call, Response<RetrofitResponce> response) {


if (response.isSuccessful()) {
RetrofitResponce retrofitResponce= response.body();
if (retrofitResponce!=null) {
Error error = retrofitResponce.getError();
Result result=retrofitResponce.getResult();
Log.e("Eroor", "rr " + error.getTitle().toString());
}
}
}

@Override
public void onFailure(Call<RetrofitResponce> call, Throwable t) {
Log.e("Failure ", "fail " + t.toString());
}
});

编码愉快!!

关于android - 在改造 2.0 中处理 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47974669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com