2013-10-04 2 views
2

Создание json массива, но показывает ошибку. Попробуйте ссылку ниже, но ничего не произошло: -Ошибка java.lang.StackOverflowError при создании объекта json array?

Add JsonArray to JsonObject

Java файл

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 [email protected] 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 [email protected] 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) 

Я не понимаю, что это произошло потому, что я буду стараться так много времени до этого. Таким образом, любое тело может помочь мне

ОТВЕТ

проблемы решительность с помощью .ToString по значению JSon.

экс

  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 
      } 

Но я до сих пор путают BCZ до этого я делаю так много времени и JSON массива JSON объект, но никогда не увидеть такого рода ошибки.

Итак, теперь мой вопрос в том, что происходит с этой проблемой?

+0

Сколько раз этот код становится выполнен? –

+0

ваше решение toString помогло мне решить мою ошибку stackOverflow, которую я получал для простого json с json-массивом. Спасибо тонну :) = –

ответ

4

Вы создали круговую структуру: j_class содержит j1 и j1 содержит j_class.

Возможно, вы хотели поставить j1_class вместо j_class.

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) { 

Также не забудьте сделать Stringify them.See выше фрагменте кода: (ToString());) Надеюсь, что это помогает кто-то там;)

Смежные вопросы