Reputation: 38439
Making json array but shows error. Try below link but nothing is happened:-
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?
Upvotes: 2
Views: 4234
Reputation: 2512
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 ;)
Upvotes: 0
Reputation: 43798
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.
Upvotes: 4