java.lang.StackOverflowError错误显示了制作JSON数组对象? [英] java.lang.StackOverflowError error shows on making json array object?
问题描述
制作JSON数组,但会显示错误。试试下面的链接,但没有什么事情发生了: -
Making json array but shows error. Try below link but nothing is happened:-
添加到JsonArray 的JSONObject
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 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
答案
问题的决心通过JSON值使用的ToString。
problem resolve by using .toString on json value.
前
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对象,但从来没有见过那样的错误。
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.
所以现在我的问题是怎么回事这个问题?
推荐答案
您已经建立了一个圆形结构: j_class
包含 J1
和 J1
包含 j_class
。
You have built up a circular structure: j_class
contains j1
and j1
contains j_class
.
也许你希望把 j1_class
到 j_class
代替。
这篇关于java.lang.StackOverflowError错误显示了制作JSON数组对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!