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

Java Gson/Volley Android从响应中获取消息而不是数据,java,android,realm,android-volley,gson,Java,Android,Realm,Android Volley,Gson,我正在向api端点发出请求,请求失败时将在响应的消息部分提供信息,如下所示: { "data":[], "messages":{ "payment_required":{ "amount":"265.00" } }, "code":"", "status":"failed", "status_code":400 } JsonObjectRequest jsonObjReque

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

{
    "data":[],
    "messages":{
        "payment_required":{
            "amount":"265.00"
            }
        },
    "code":"",
    "status":"failed",
    "status_code":400
}
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);
在android应用程序上,我正在处理
JsonObjectRequest
,如下所示:

{
    "data":[],
    "messages":{
        "payment_required":{
            "amount":"265.00"
            }
        },
    "code":"",
    "status":"failed",
    "status_code":400
}
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);
JsonObjectRequest JsonObjectRequest=新的JsonObjectRequest(Request.Method.PUT、url、数据、,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
ChangeColorInterface.requestSuccess();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
NetworkResponse NetworkResponse=error.NetworkResponse;
if(networkResponse!=null&&networkResponse.data!=null){
String jsonError=新字符串(networkResponse.data);
Log.v(“变色”,jsonError);
Gson Gson=new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_,带下划线)
.create();
ChangeModelVersionResponse ChangeModelVersionResponse=gson.fromJson(jsonError,ChangeModelVersionResponse.class);
realm.beginTransaction();
realm.copyToRealm(changeModelVersionResponse.data);
realm.commitTransaction();
changeColourInterface.requestFailed(changeModelVersionResponse.data);
}
}
});
add(jsonObjRequest);
我进入了
onErrorResponse
部分,但是当我试图在ChangeModelVersion表中创建一个本地域db行时,我得到了一个错误。这是因为
GSON
响应正在查找“数据”部分。但我需要它来查找信息部分


如何实现这一点?

此行是访问
数据
值的地方:

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

realm.copyToRealm(changeModelVersionResponse.messages);

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

正如您回答的那样,我完全意识到,这是一个愚蠢的错误。无论如何谢谢你!