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

我正在向 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 表中创建本地领域数据库行时,出现错误。这是因为GSON响应正在寻找“数据”部分。但我需要它来查找消息部分。


我怎样才能做到这一点?


慕虎7371278
浏览 146回答 1
1回答

慕勒3428872

这一行是data访问值的地方:realm.copyToRealm(changeModelVersionResponse.data);如果您的ChangeModelVersionResponse类型已经包含一个messages字段,您可以将其更新为类似的内容(具体语法可能略有不同,具体取决于 Realm API):realm.copyToRealm(changeModelVersionResponse.messages);如果您的ChangeModelVersionResponse类型尚未包含messages字段,则需要先添加该字段(并创建它所依赖的任何类),然后才能更新上面的行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java