5

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 + "\n");
            }
            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

5
  • 2
    you are getting JSONObject for TAG_user_detail not an array Commented Jul 25, 2013 at 6:53
  • Will you please post some code Commented Jul 25, 2013 at 7:12
  • Which code? put your complete JSON. Commented Jul 25, 2013 at 7:18
  • @ Pankaj...This is my json Commented Jul 25, 2013 at 7:20
  • {"user_details":{"user_id":"1","user_name":"chand","user_phone":"9620085675","ref_id":6386}} Commented Jul 25, 2013 at 7:20

3 Answers 3

24

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.

Sign up to request clarification or add additional context in comments.

8 Comments

Ok.. sorry man... i am on verge of insane condition..but i upvoted you
hey... hope you will get ride on those.. :) all the best
Hey pankaj.. i am getting another issue that is.. Without any doubt your suggestion is really very help-full for me. While i am parsing {"user_details":{"ref_id":"chand09","user_id":"1","user_name":"chand","user_phone":"9620085675"}}. I am getting all the info from json except "ref_id".
Check if value for that tag, exists. because when I run the code its giving me the value of ref_id too. and if value is there try to change the ref_id to another string.
you are awesome guy..before your suggestion i just change ref_id to another string it work for me.when i get back i saw your sugestion.
|
7

Learn from exception

org.json.JSONObject cannot be converted to JSONArray

You are getting this exception org.json.JSONObject cannot be converted to JSONArray because you are trying to convert JSONObject to JSONArray which is not possible.

{ represents json object node

[ represents json array node

3 Comments

thanks for your response... Will you please post some code here,,,,, It will be help full for me
@BlueGreen try by parsing JSONObject !
@BlueGreen like if you want to retrieve user name than use: String name_fromjson=(String) json.get("user_name"); no need of for loop as well as of jsonarray !
3

your jsondata is json object format. change this line

JsonObject user_detail_jsonobj = json.getJSONObject(TAG_user_detail);

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.