有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何让Android Volley解析我对工作线程中POJO的Json响应

我目前有以下代码:

JsonObjectRequest jsObjRequest = new JsonObjectRequest(
                Request.Method.GET, Network.getFullUrl("/Account/Login"),
                null, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        showProgress(false);
                        Gson gson = new Gson();
                        LoginResponseViewModel model = gson.fromJson(
                                response, LoginResponseViewModel.class);

                        if (model.Status) {
                            Intent intent = new Intent(LoginActivity.this,
                                    MainMenuActivity.class);
                            startActivity(intent);
                            finish();
                        } else {
                            mPasswordView
                                    .setError(getString(R.string.error_incorrect_password));
                            mPasswordView.requestFocus();
                        }
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {                            
                        showProgress(false);
                        //TODO: show error
                    }
                });
        Network.getInstance(this).addToRequestQueue(jsObjRequest);

我怎样才能让凌空抽射完成gson。在worker线程中输入fromJson,然后将所需的正确对象传递给我

这将有助于减少UI/主线程上的负载,然后简化代码

我可以使用默认的JsonObjectRequest还是必须创建自定义请求类型


共 (1) 个答案

  1. # 1 楼答案

    你应该把gson.fromJson()当作

     Gson gson = new Gson();
     LoginResponseViewModel model = gson.fromJson(response.toString(), LoginResponseViewModel.class);
    

    这是因为gson.fromJson()接受JsonObject参数,该参数位于com.google.gson.JsonObject内的Gson库中,而您正在发送JSONObject参数,该参数位于org.json.JSONObject