Android 我的错误是JSONArray无法转换为JSONObject

Android 我的错误是JSONArray无法转换为JSONObject,android,Android,我是JSON新手,遇到以下异常: org.json.JSONArray无法在try部分的第一行转换为JSONObject 请帮我取下这个。这是我的密码: public void sendjsonrequest(){ JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

我是JSON新手,遇到以下异常:

org.json.JSONArray无法在try部分的第一行转换为JSONObject

请帮我取下这个。这是我的密码:

public void sendjsonrequest(){
        JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONArray jsonArray=response.getJSONArray("dish");
                    for(int i=0; i<jsonArray.length();i++) {
                     JSONObject dishes = jsonArray.getJSONObject(i);
                      int  idd = dishes.getInt("id");
                      String  latitude = dishes.getString("latitude");
                      String  longitude = dishes.getString("longitude");
                     String   snip = dishes.getString("snippet");
                        id.append(idd+","+latitude+","+longitude+","+snip+"");                      //  id.setText(idd);
                      //  lat.setText(latitude);
                      //  lon.setText(longitude);
                      //  snippet.setText(snip);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        },new Response.ErrorListener(){

            @Override
            public void onErrorResponse(VolleyError error) {
                 error.printStackTrace();
            }
        });

        rq.add(jsonObjectRequest);
    }
请尝试以下代码:

将参数中的响应更改为
JSONArray
,而不是
JSONObject
。 将中的JsonObjectRequest更改为
JsonArrayRequest

您的JSON:

[{"id":"3","latitude":"Latitude: 11.913859799999999","longitude":"Longitude: 79.8144722","snippet":"I am Here"}]
代码:

    public void sendjsonrequest(){

        JsonArrayRequest jsonObjectRequest=new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONArray jsonArray) { // Change it here
                try {
                    for(int i=0; i<jsonArray.length();i++) {
                        JSONObject dishes = jsonArray.getJSONObject(i);
                        int  idd = dishes.getInt("id");
                        String  latitude = dishes.getDouble("latitude") +"";
                        String  longitude = dishes.getDouble("longitude") + "";
                        String   snip = dishes.getString("snippet");
                        id.append(idd+","+latitude+","+longitude+","+snip+"");                      //  id.setText(idd);
                        //  lat.setText(latitude);
                        //  lon.setText(longitude);
                        //  snippet.setText(snip);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        },new Response.ErrorListener(){

            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });

        rq.add(jsonObjectRequest);
    }
public void sendjsonrequest(){
JsonArrayRequest jsonObjectRequest=新的JsonArrayRequest(Request.Method.GET,url,null,new Response.Listener()){
@凌驾
public void onResponse(JSONArray JSONArray){//在此处更改
试一试{

对于(int i=0;我在你的JSON中没有看到任何
dish
字段。dish没有以give JSON格式显示。是的,实际上我将其更改为我的url名称。但是在收到相同的错误之前,我仍然没有收到任何消息。你能发布准确的响应字符串吗?并在logspublic void sendjsonrequest()中发布你收到的异常{JsonObjectRequest JsonObjectRequest=new JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener(){@Override public void onResponse(JSONObject Response){try{JSONArray JSONArray=new JSONArray(Response.toString());JSONObject disks=jsonArray.getJSONObject(0);将这一行:Log.d(“response”,response+”);放在“try{”之后,并从logCat将该字符串写到这里
    public void sendjsonrequest(){

        JsonArrayRequest jsonObjectRequest=new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONArray jsonArray) { // Change it here
                try {
                    for(int i=0; i<jsonArray.length();i++) {
                        JSONObject dishes = jsonArray.getJSONObject(i);
                        int  idd = dishes.getInt("id");
                        String  latitude = dishes.getDouble("latitude") +"";
                        String  longitude = dishes.getDouble("longitude") + "";
                        String   snip = dishes.getString("snippet");
                        id.append(idd+","+latitude+","+longitude+","+snip+"");                      //  id.setText(idd);
                        //  lat.setText(latitude);
                        //  lon.setText(longitude);
                        //  snippet.setText(snip);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        },new Response.ErrorListener(){

            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });

        rq.add(jsonObjectRequest);
    }