Android Parse Json响应Java ArrayList

Tar*_*tar 1 java android json android-volley

我试图通过Volley向我的WCF服务发出GET请求,我想解析它对Java的响应ArrayList.这是我的方法

    public ArrayList<Company> getCompanies(){

        String url = AUDITTRACKINGAPP_SERVICE_URI + "GetCompanies";
        String tagJsonReq = "companiesRequest";

        final ProgressDialog pDialog = new ProgressDialog(context);
        pDialog.setMessage("Please Wait...");
        pDialog.show();

        final ArrayList<Company> companies = new ArrayList<Company>();

        JsonObjectRequest companiesRequest = new JsonObjectRequest(  Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {

                        Log.v(TAG, "COMPANIES RESPONSE:" + response.toString());

                        try {
                            JSONArray companiesJson = response.getJSONArray("GetCompaniesResult");

                            for (int i = 0; i < companiesJson.length(); i++) {

                                JSONObject jObject = (JSONObject)companiesJson.get(i);

                                Company company = new Company();
                                company.setCompanyId(Integer.parseInt(jObject.getString("CompanyId")));
                                Log.v(TAG, "COMPANIES setCompanyId:" + jObject.getString("CompanyId"));
                                company.setCompanyName(jObject.getString("CompanyName"));
                                Log.v(TAG, "COMPANIES setCompanyName:" + jObject.getString("CompanyName"));

                                companies.add(company);
                            }

                        } catch (JSONException e) {
                            Log.v(TAG, "COMPANIES RESPONSE ERROR ON PARSING JSON:" + e.getMessage());
                        }

                        pDialog.hide();
                    }
                },
                new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.v(TAG, "COMPANIES onErrorResponse:" + error.getMessage());
                    pDialog.hide();
                }
            });

    AppController.getInstance().addToRequestQueue(companiesRequest, tagJsonReq);

    return companies;
}
Run Code Online (Sandbox Code Playgroud)

JSON响应:

 {"GetCompaniesResult":[{"CompanyId":1,"CompanyName":"CompanyName1"},{"CompanyId":2,"CompanyName":"CompanyName2"}]}
Run Code Online (Sandbox Code Playgroud)

我能够获得JSON响应但ArrayList<Company>返回null.我认为这onResponse是一个calback方法,并在另一个线程中运行,所以我不能填充列表,但因为我是一个Android新手,我不知道如何管理这个问题.任何帮助,将不胜感激.

小智 5

您需要为json数组的每个元素创建json对象

try {
                            JSONArray companiesJson = response.getJSONArray("GetCompaniesResult");

                            for (int i = 0; i < companiesJson.length(); i++) {


                    JSONObject obj = Website.getJSONObject(i);


                                Company company = new Company();
                                company.setCompanyId(Integer.parseInt(obj.getString("CompanyId")));
                                Log.v(TAG, "COMPANIES setCompanyId:" + obj.getString("CompanyId"));
                                company.setCompanyName(obj.getString("CompanyName"));
                                Log.v(TAG, "COMPANIES setCompanyName:" + obj.getString("CompanyName"));

                                companies.add(company);
                            }

                        } catch (JSONException e) {
                            Log.v(TAG, "COMPANIES RESPONSE ERROR ON PARSING JSON:" + e.getMessage());
                        }
Run Code Online (Sandbox Code Playgroud)