org.json.JSONException:类型org.json.JSONArray的值[{}]无法转换为JSONObject

问题描述:

当我打电话给我的服务web时,我有这个异常:org.json.JSONException:Value [{}] type org.json.JSONArray不能被转换为JSONObject的org.json.JSONException:类型org.json.JSONArray的值[{}]无法转换为JSONObject

result

这是我的源代码:

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

           try { 

           JSONArray missions = response.getJSONArray("Value"); 

           for(int i=0;i<missions.length();i++){ 
             // Get current json object 
             JSONObject mission = missions.getJSONObject(i); 

             // Get the current student (json object) data 
             Long idMission = mission.getLong("idMission"); 
             String etatMission = mission.getString("etatMission"); 

             text.append(idMission+" " + etatMission); 
             text.append("\n\n"); 
             } 
           }catch (JSONException e) { 
            e.printStackTrace(); 
           } 

          } 
         }, 
         new Response.ErrorListener() { 
          @Override 
          public void onErrorResponse(VolleyError error) { 
           text.setText(error.getMessage()); 
          } 
         } 
       ); 
       requestQueue.add(obreq); 

的ansewer很简单:

for(int i=0;i<response.length();i++){ 
         JSONObject mission = response.getJSONObject(i); 
} 

如果您从API得到响应是JsonArray那么你应该使用这样的:

public JsonArrayRequest(int method, String url, JSONObject jsonRequest, 
    Listener<JSONArray> listener, ErrorListener errorListener) { 
super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), 
    listener, errorListener); 
}