gpt4 book ai didi

java - Gson/Volley Android 从响应中获取消息而不是数据

转载 作者:行者123 更新时间:2023-12-02 10:47:55 24 4
gpt4 key购买 nike

我正在向 api 端点发出请求,当它失败时,将在响应的消息部分中提供信息,如下所示:

{
"data":[],
"messages":{
"payment_required":{
"amount":"265.00"
}
},
"code":"",
"status":"failed",
"status_code":400
}

在 Android 应用程序上,我正在传递 JsonObjectRequest ,如下所示:

JsonObjectRequest jsonObjRequest = new JsonObjectRequest(Request.Method.PUT, url, data,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
changeColourInterface.requestSuccess();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
NetworkResponse networkResponse = error.networkResponse;

if (networkResponse != null && networkResponse.data != null) {

String jsonError = new String(networkResponse.data);

Log.v("ChangeColour", jsonError);

Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();

ChangeModelVersionResponse changeModelVersionResponse = gson.fromJson(jsonError, ChangeModelVersionResponse.class);

realm.beginTransaction();

realm.copyToRealm(changeModelVersionResponse.data);

realm.commitTransaction();

changeColourInterface.requestFailed(changeModelVersionResponse.data);
}
}
});

queue.add(jsonObjRequest);

我进入了 onErrorResponse 部分,但是当我尝试在 ChangeModelVersion 表中创建本地 Realm 数据库行时,出现错误。这是因为 GSON 响应正在查找“数据”部分。但我需要它来查找消息部分。

我怎样才能实现这个目标?

最佳答案

这一行是访问data值的地方:

realm.copyToRealm(changeModelVersionResponse.data);

如果您的 ChangeModelVersionResponse 类型已包含 messages 字段,您可以将其更新为类似的内容(具体语法可能略有不同,具体取决于 Realm API):

realm.copyToRealm(changeModelVersionResponse.messages);

如果您的 ChangeModelVersionResponse 类型尚未包含 messages 字段,则您需要添加该字段(并创建它所依赖的任何类),然后才能更新上面的行。

关于java - Gson/Volley Android 从响应中获取消息而不是数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52407843/

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