Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
778 views
in Technique[技术] by (71.8m points)

android - org.json.JSONObject cannot be converted to JSONArray

I am getting a exception while working in json . My JSONPresr class is as follow

 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;

 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.json.JSONException;
 import org.json.JSONObject;

 import android.os.AsyncTask;
 import android.util.Log;

public class JSONParser {
 static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    public JSONObject getJSONFromUrl(String url) {

        // Making HTTP request
        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();          

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "
");
            }
            is.close();
            json = sb.toString();
            System.out.println(" value in json sting"+json);
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
            Log.e("JSON Parser", "Error parsing data [" + e.getMessage()+"] "+json);
            System.out.println(" error is here");

        }

        // return JSON String
        return jObj;

    }

    }

I am getting my data by these code

          String TAG_user_detail = "user_details";
              String TAG_user_id = "user_id";
             String TAG_user_name = "user_name";
             String TAG_user_phone = "user_phone";
             String TAG_ref_id = "ref_id";
             JSONArray user_detail_jsonarray = null;
             JSONParser jParser = new JSONParser();

             // getting JSON string from URL
             JSONObject json = jParser.getJSONFromUrl(url);
             try {
                 // Getting Array of Contacts
                 user_detail_jsonarray = json.getJSONArray(TAG_user_detail);

                 // looping through All Contacts
                 for(int i = 0; i < user_detail_jsonarray.length(); i++){
                     JSONObject c = user_detail_jsonarray.getJSONObject(i);

                     // Storing each json item in variable
                     int id = c.getInt(TAG_user_id);
                     System.out.println("user id from json"+id);

                     String name_fromjson = c.getString(TAG_user_name);
                     System.out.println("user name from json"+name_fromjson);

                     int phone_no_fromjson = c.getInt(TAG_user_phone);
                     System.out.println("user phone from json"+phone_no_fromjson);

                     int ref_id_fromjson = c.getInt(TAG_ref_id);
                     System.out.println("user ref id from json"+ref_id_fromjson);





                 }
             } catch (JSONException e) {
                 e.printStackTrace();
             }

But i am countiniously getting Exception in this line

    user_detail_jsonarray = json.getJSONArray(TAG_user_detail);

My Stake Trace message is as

       {"ref_id":1295,"user_name":"chand","user_phone":"9620085675","user_id":"1"} at user_details of type org.json.JSONObject cannot be converted to JSONArray

I tried many link but unfortunately i am not able to get my result. Please any body just help me to solve this issue. Thanks in advance to all

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Its clear from error that you are trying to convert Json Object into Json array. That should not.

Here is the code to read your JSON response.

String json = "Assuming that here is your JSON response"; 
try {
    JSONObject parentObject = new JSONObject(json);
    JSONObject userDetails = parentObject.getJSONObject("user_details"); 

    //And then read attributes like             
    String name = userDetails.getString("user_name"); 
    String phone = userDetails.getString("user_phone");
    String id = userDetails.getString("re??f_id");

} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} 

Above code is for {"user_details":{"user_id":"1","user_name":"chand","user_phone":"9620085675","re??f_id":6386}} JSON.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...