2

Making json array but shows error. Try below link but nothing is happened:-

Add JsonArray to JsonObject

java file

try 
            {
                View view;
                for (int i = 0; i < list_lay.getChildCount(); i++) 
                {
                    view=list_lay.getChildAt(i);
                    JSONObject j1=new JSONObject();
                    TextView main = (TextView) view.findViewById(R.id.main);

                    String[] m=main.getTag().toString().split("::::");

                    j1.put("account_id",m[0]);
                    j1.put("address_1",m[1]);
                    j1.put("address_2",m[2]);
                    j1.put("city",m[3]);
                    j1.put("email",m[4]);
                    j1.put("id",m[5]);
                    j1.put("manager_name",m[6]);
                    j1.put("name",m[7]);
                    j1.put("zip",m[11]);
                    j1.put("state",m[9]);
                    j1.put("phone",m[8]);
                    j1.put("website",m[10]);

                    LinearLayout data_main1=(LinearLayout) view.findViewById(R.id.data_main1);;

                    JSONArray j_class=new JSONArray();


                    System.out.println("data_main1.getChildCount() => "+data_main1.getChildCount());

                    for (int k = 0; k < data_main1.getChildCount(); k++) 
                    {

                        View view1=data_main1.getChildAt(k);
                        TextView name = (TextView) view1.findViewById(R.id.name);
                        CheckBox cb = (CheckBox) view1.findViewById(R.id.checkBox1);

                        if(cb.isChecked())
                        {
                            JSONObject j1_class=new JSONObject();
                            String [] l=name.getTag().toString().split("::::");
                            j1_class.put("id",(Object)l[0]);
                            j1_class.put("teacher",(Object)l[1]);
                            j1_class.put("name",(Object)l[2]);
                            j1_class.put("enrolled",(Object)"yes");
                            j_class.put((Object)j1);

                            System.out.println("j1  => "+(Object)j1);
                            System.out.println("j_class  => "+(Object)j_class);
                        }
                    }
                    j1.put("classes", (Object)j_class);
                    json.put((Object)j1);

                    System.out.println("json  => "+json);

                }
                System.out.println("array   => "+(Object)json);

                List <NameValuePair> nvps = new ArrayList <NameValuePair>();
                nvps.add(new BasicNameValuePair("params", json.toString()));
                nvps.add(new BasicNameValuePair("student_id", getIntent().getStringExtra("sid")));
                nvps.add(new BasicNameValuePair("account_id", HomeScreen.account_id));

                String result = SendJSON.sendJson(
                        "http://example.com/mob/xxx.php"
                        ,nvps,"PHPSESSID=lelrk87empdqsa3assadags9kpsncuv6");

                return result;
            }
            catch (Exception e) 
            {
                // TODO: handle exception
                e.printStackTrace();
            }

Logcat

10-04 21:55:49.309: E/AndroidRuntime(13183): FATAL EXCEPTION: AsyncTask #1
10-04 21:55:49.309: E/AndroidRuntime(13183): java.lang.RuntimeException: An error occured while executing doInBackground()
10-04 21:55:49.309: E/AndroidRuntime(13183):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.lang.Thread.run(Thread.java:856)
10-04 21:55:49.309: E/AndroidRuntime(13183): Caused by: java.lang.StackOverflowError
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.lang.String._getChars(String.java:913)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:147)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at java.lang.StringBuilder.append(StringBuilder.java:216)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.beforeValue(JSONStringer.java:412)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.open(JSONStringer.java:178)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.array(JSONStringer.java:139)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:570)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:237)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONArray.writeTo(JSONArray.java:572)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONStringer.value(JSONStringer.java:233)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org.json.JSONObject.writeTo(JSONObject.java:667)
10-04 21:55:49.309: E/AndroidRuntime(13183):    at org
10-04 21:56:02.329: E/WindowManager(13183): Activity xicom.biz.dancestudio.HomeScreen has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41fdc290 that was originally added here
10-04 21:56:02.329: E/WindowManager(13183): android.view.WindowLeaked: Activity xicom.biz.dancestudio.HomeScreen has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41fdc290 that was originally added here
10-04 21:56:02.329: E/WindowManager(13183):     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:419)
10-04 21:56:02.329: E/WindowManager(13183):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:322)
10-04 21:56:02.329: E/WindowManager(13183):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:234)
10-04 21:56:02.329: E/WindowManager(13183):     at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:153)
10-04 21:56:02.329: E/WindowManager(13183):     at android.view.Window$LocalWindowManager.addView(Window.java:557)
10-04 21:56:02.329: E/WindowManager(13183):     at android.app.Dialog.show(Dialog.java:277)
10-04 21:56:02.329: E/WindowManager(13183):     at xicom.biz.dancestudio.more.StudentClassesDetail$SaveDialog.onPreExecute(StudentClassesDetail.java:103)
10-04 21:56:02.329: E/WindowManager(13183):     at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
10-04 21:56:02.329: E/WindowManager(13183):     at android.os.AsyncTask.execute(AsyncTask.java:534)
10-04 21:56:02.329: E/WindowManager(13183):     at xicom.biz.dancestudio.more.StudentClassesDetail$2.onClick(StudentClassesDetail.java:86)
10-04 21:56:02.329: E/WindowManager(13183):     at android.view.View.performClick(View.java:4191)
10-04 21:56:02.329: E/WindowManager(13183):     at android.view.View$PerformClick.run(View.java:17229)
10-04 21:56:02.329: E/WindowManager(13183):     at android.os.Handler.handleCallback(Handler.java:615)
10-04 21:56:02.329: E/WindowManager(13183):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-04 21:56:02.329: E/WindowManager(13183):     at android.os.Looper.loop(Looper.java:137)
10-04 21:56:02.329: E/WindowManager(13183):     at android.app.ActivityThread.main(ActivityThread.java:4960)
10-04 21:56:02.329: E/WindowManager(13183):     at java.lang.reflect.Method.invokeNative(Native Method)
10-04 21:56:02.329: E/WindowManager(13183):     at java.lang.reflect.Method.invoke(Method.java:511)
10-04 21:56:02.329: E/WindowManager(13183):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
10-04 21:56:02.329: E/WindowManager(13183):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
10-04 21:56:02.329: E/WindowManager(13183):     at dalvik.system.NativeStart.main(Native Method)

I do not understand what is happened because i will try so many time before this. So any body can help me

ANSWER

problem resolve by using .toString on json value.

ex

            try 
            {

                View view;
                for (int i = 0; i < list_lay.getChildCount(); i++) 
                {
                    view=list_lay.getChildAt(i);
                    JSONObject j1=new JSONObject();
                    TextView main = (TextView) view.findViewById(R.id.main);

                    String[] m=main.getTag().toString().split("::::");

                    j1.put("account_id",m[0]);
                    j1.put("address_1",m[1]);
                    j1.put("address_2",m[2]);
                    j1.put("city",m[3]);
                    j1.put("email",m[4]);
                    j1.put("id",m[5]);
                    j1.put("manager_name",m[6]);
                    j1.put("name",m[7]);
                    j1.put("zip",m[11]);
                    j1.put("state",m[9]);
                    j1.put("phone",m[8]);
                    j1.put("website",m[10]);

                    LinearLayout data_main1=(LinearLayout) view.findViewById(R.id.data_main1);;

                    JSONArray j_class=new JSONArray();


                    System.out.println("data_main1.getChildCount() => "+data_main1.getChildCount());

                    for (int k = 0; k < data_main1.getChildCount(); k++) 
                    {

                        View view1=data_main1.getChildAt(k);
                        TextView name = (TextView) view1.findViewById(R.id.name);
                        CheckBox cb = (CheckBox) view1.findViewById(R.id.checkBox1);

                        if(cb.isChecked())
                        {
                            JSONObject j1_class=new JSONObject();
                            String [] l=name.getTag().toString().split("::::");
                            j1_class.put("id",l[0].toString());
                            j1_class.put("teacher",l[1].toString());
                            j1_class.put("name",l[2].toString());
                            j1_class.put("enrolled","yes".toString());
                            j_class.put(j1.toString());

                            System.out.println("j1  => "+j1.toString());
                            System.out.println("j_class  => "+j_class.toString());
                        }
                    }
                    j1.put("classes", j_class.toString());
                    json.put(j1.toString());

                    System.out.println("json  => "+json.toString());

                }
                System.out.println("array   => "+json.toString());
            }
            catch (Exception e) 
            {
                // TODO: handle exception
            }

But i'm still confuse bcz before this i'm making so many time json array and json object but never ever see that kind of error.

So now my question is what's going on this problem?

2
  • How many times this code is getting executed? Commented Oct 4, 2013 at 17:57
  • your toString solution helped me resolve my stackOverflow error I had been receiving for a simple json with json array. Thanks a ton :) = Commented May 11, 2016 at 10:36

2 Answers 2

4

You have built up a circular structure: j_class contains j1 and j1 contains j_class.

Probably you wanted to put j1_class into j_class instead.

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

Comments

0
JSONObject json = new JSONObject();

    try {

        json.append("msisdn", new Object());
        JSONArray messages = new JSONArray();

        json.append("messages",(Object) messages);          


        JSONArray calls = new JSONArray();

        json.append("calls", (Object)calls);


        JSONArray locations = new JSONArray();

        json.append("locations", (Object)locations);




        while (rs.next()) {




            calldate =rs.getTimestamp(5);
            calltype =rs.getString(6);
            callstate =rs.getString(7);




            /**Location**/
            locationname =rs.getString(9);
            longitude=rs.getString(10);
            latitude=rs.getString(11);
            locationtimestamp =rs.getTimestamp(12);
            positionid =rs.getInt(13);

            /**********MESSAGES******/
            JSONObject messageObject = new JSONObject();
            messageObject.append("date", smsdate);
            messageObject.append("type", type);
            messageObject.append("sms", message);
            messages.put(messageObject.toString());

            /**********CALLS******/
            JSONObject callObject = new JSONObject();
            callObject.append("date", calldate);
            callObject.append("type", calltype);
            callObject.append("msisdn", msisdn);
            callObject.append("status", callstate);
            calls.put(callObject.toString());
            /***********LOCATIONS********/
            JSONObject locationObject = new JSONObject();
            locationObject.append("date", locationdate);
            locationObject.append("placename", locationname);
            locationObject.append("latitude", latitude);
            locationObject.append("longitude", longitude);
            locations.put(locationObject.toString());


        }
        json.append("msisdn", msisdn_);

    }catch(JSONException je){   
        je.printStackTrace();
    } catch (Exception se) {

Also remember to do Stringify them.See above snippet :(toString());) Hope it helps somebody out there ;)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.