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

Posted

技术标签:

【中文标题】org.json.JSONException: org.json.JSONArray 类型的Value[] 无法转换为 JSONObject【英文标题】:org.json.JSONException:Value[] of type org.json.JSONArray cannot be converted to JSONObjectorg.json.JSONException: org.json.JSONArray 类型的Value[] 无法转换为 JSONObject 【发布时间】:2018-02-04 14:32:45 【问题描述】:

当我调用我的服务网站时,我遇到了这个异常:org.json.JSONArray 类型的 org.json.JSONException:Value[] 无法转换为 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);

【问题讨论】:

【参考方案1】:

如果您从 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);

【讨论】:

【参考方案2】:

答案很简单:

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

【讨论】:

以上是关于org.json.JSONException: org.json.JSONArray 类型的Value[] 无法转换为 JSONObject的主要内容,如果未能解决你的问题,请参考以下文章

org.json.JSONException:电子邮件没有值

org.json.JSONException:名称没有值

org.json.JSONException:overview_polyLine 没有值

类型 org.json.JSONException 被定义多次

java.lang.classnotfoundexception org.json.jsonexception

在尝试解析 JSON 数据 W/System.err 时出现此错误:org.json.JSONException:对客户没有价值