如何使用齐射解析json数据

时间:2016-08-05 06:59:30

标签: android json android-volley

我正在使用volley lib。在我的项目中的每个活动中,我的第一个登录页面都使用了齐射JSON对象请求方法(POST),并且无法解析下一个活动。

主屏幕的Json数据:

{
"err-code": 5,
  "job_details": [
    {
      "job_id": 33,
      "job_no": "ES53-AF",
      "contract_manager_id": 4,
      "company_name": "A Construction  Ltd",
      "time_spent": 4.5
    },
    {
      "job_id": 5,
      "job_no": "ES1465-AF",
      "contract_manager_id": 4,
      "company_name": "Trios Property",
      "job_description": "Carry out the rewire of ",
      "time_spent": 26.5
    },
    {
      "job_id": 81,
      "job_no": "ES101-AF",
      "contract_manager_id": 4,
      "company_name": "Arden Construction  Ltd",
      "job_description": "Carry out works as per esti 3AQ",
      "time_spent": 2.5
    },
  }]
}

代码:

private  void getDataNew()
{
   String url = "http://103.5.103.8:067/ivservices/Webservices/joblisting";
    HashMap<String, String> user = session.getUserDetails();
    String token = user.get(SessionManager.KEY_TOKEN);
    Log.e("token check kro", token);
    final String role = user.get(SessionManager.KEY_ROLE);
    Log.e("role", role);
    String user_id = user.get(SessionManager.KEY_USERID);
 // Log.e("user_id", user_id.toString());
    Map<String, String> params = new HashMap();
    params.put(KEY_TOKEN, token);
    params.put(KEY_ROLE, role);
    params.put(KEY_ID, user_id);

        JSONObject parameters = new JSONObject(params);

        JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url, parameters, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
               // Log.e("response mila", response.toString());
                parseData(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error)
            {
                error.printStackTrace();
                //TODO: handle failure
            }
        });

    Volley.newRequestQueue(this).add(jsonRequest);
    }

2 个答案:

答案 0 :(得分:0)

试试这个

  

注意检查你的json删除,}之前的情况比没有语法错误回复

 try {

        int err_code=response.getInt("err-code");

        JSONArray jsonArray=response.getJSONArray("job_details");
        for(int i=0;i<jsonArray.length();i++)
        {
            JSONObject jsonObjectdetail=jsonArray.getJSONObject(i);

            int job_id=jsonObjectdetail.getInt("job_id");
            int time_spent=jsonObjectdetail.getInt("time_spent");
            int contract_manager_id=jsonObjectdetail.getInt("contract_manager_id");
            String job_no=jsonObjectdetail.getString("job_no");
            String company_name=jsonObjectdetail.getString("company_name");
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

从你的json中删除Extra}。

你在json解析你回复@Er的代码时犯了一个错误。 Arjun saini。

这个错误就在这一行:

JSONArray jsonArray = Object.getJSONArray(“ err-code ”);

它应该是这样的:

JSONArray jsonArray = Object.getJSONArray(“ job_details ”);

确保json应该是这样的:

    {


"err-code": 5,
  "job_details": [
    {
      "job_id": 33,
      "job_no": "ES53-AF",
      "contract_manager_id": 4,
      "company_name": "A Construction  Ltd",
      "time_spent": 4.5
    },
    {
      "job_id": 5,
      "job_no": "ES1465-AF",
      "contract_manager_id": 4,
      "company_name": "Trios Property",
      "job_description": "Carry out the rewire of ",
      "time_spent": 26.5
    },


{
  "job_id": 81,
  "job_no": "ES101-AF",
  "contract_manager_id": 4,
  "company_name": "Arden Construction  Ltd",
  "job_description": "Carry out works as per esti 3AQ",
  "time_spent": 2.5
}
  ]
}

尝试此代码希望它能工作,如果不工作,请分享logcat错误和异常

try {
        JSONObject Object=new JSONObject(response);
        int code = Object.getInt("err-code");
        if (code == 0) {
            JSONArray jsonArray = Object.getJSONArray("job_details");
            List<JobList> jobListArray=new ArrayList<JobList>();
            for (int i = 0; i <= jsonArray.length(); i++) { 
                JSONObject jsonObject = (JSONObject) jsonArray.get(i);
                JobList model_joblist=new JobList();
                model_joblist.setJobno(jsonObject.getString(JobList.JOB_NO));
                model_joblist.setJobid(jsonObject.getInt(JobList.JOB_ID));
                model_joblist.setDescreption(jsonObject.getString(JobList.JOB_DESCRIPTION));
                jobListArray.add(model_joblist);
            }
        }
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

如果它仍然不起作用,那么任何其他代码中都有错误,例如在json中有你的model_joblist等。

请分享更多代码和logcat。