android - type org.json.jsonobject cannot be converted to jsonarray -
android - type org.json.jsonobject cannot be converted to jsonarray -
i have problem app , logcat shows tt type org.json.jsonobject cannot converted jsonarray. i'm not sure how solve problem. mean? how alter code
here's logcat info:
10-15 06:33:05.394: e/json parser(1322): error parsing info org.json.jsonexception: value {"table2":[{"status":"queueing","phonenumber":"123","remarks":"w","peoplenumber":"5"},{"status":"","phonenumber":"345","remarks":"ss","peoplenumber":"3"},{"status":"","phonenumber":"555","remarks":"f","peoplenumber":"2"},{"status":"","phonenumber":"1345","remarks":"","peoplenumber":"5"}]} of type org.json.jsonobject cannot converted jsonarray 10-15 06:33:05.394: w/dalvikvm(1322): threadid=11: thread exiting uncaught exception (group=0xa4d80b20) 10-15 06:33:05.394: e/androidruntime(1322): fatal exception: asynctask #1 10-15 06:33:05.394: e/androidruntime(1322): process: com.zanqi.datatolistview, pid: 1322 10-15 06:33:05.394: e/androidruntime(1322): java.lang.runtimeexception: error occured while executing doinbackground() 10-15 06:33:05.394: e/androidruntime(1322): @ android.os.asynctask$3.done(asynctask.java:300) 10-15 06:33:05.394: e/androidruntime(1322): @ java.util.concurrent.futuretask.finishcompletion(futuretask.java:355) 10-15 06:33:05.394: e/androidruntime(1322): @ java.util.concurrent.futuretask.setexception(futuretask.java:222) 10-15 06:33:05.394: e/androidruntime(1322): @ java.util.concurrent.futuretask.run(futuretask.java:242) 10-15 06:33:05.394: e/androidruntime(1322): @ android.os.asynctask$serialexecutor$1.run(asynctask.java:231) 10-15 06:33:05.394: e/androidruntime(1322): @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112) 10-15 06:33:05.394: e/androidruntime(1322): @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587) 10-15 06:33:05.394: e/androidruntime(1322): @ java.lang.thread.run(thread.java:841) 10-15 06:33:05.394: e/androidruntime(1322): caused by: java.lang.nullpointerexception 10-15 06:33:05.394: e/androidruntime(1322): @ com.zanqi.datatolistview.mainactivity$progresstask.doinbackground(mainactivity.java:85) 10-15 06:33:05.394: e/androidruntime(1322): @ com.zanqi.datatolistview.mainactivity$progresstask.doinbackground(mainactivity.java:1) 10-15 06:33:05.394: e/androidruntime(1322): @ android.os.asynctask$2.call(asynctask.java:288) 10-15 06:33:05.394: e/androidruntime(1322): @ java.util.concurrent.futuretask.run(futuretask.java:237) 10-15 06:33:05.394: e/androidruntime(1322): ... 4 more 10-15 06:33:06.322: e/windowmanager(1322): android.view.windowleaked: activity com.zanqi.datatolistview.mainactivity has leaked window com.android.internal.policy.impl.phonewindow$decorview{5282e178 v.e..... r....... 0,0-1664,192} added here 10-15 06:33:06.322: e/windowmanager(1322): @ android.view.viewrootimpl.<init>(viewrootimpl.java:348) 10-15 06:33:06.322: e/windowmanager(1322): @ android.view.windowmanagerglobal.addview(windowmanagerglobal.java:248) 10-15 06:33:06.322: e/windowmanager(1322): @ android.view.windowmanagerimpl.addview(windowmanagerimpl.java:69) 10-15 06:33:06.322: e/windowmanager(1322): @ android.app.dialog.show(dialog.java:286) 10-15 06:33:06.322: e/windowmanager(1322): @ com.zanqi.datatolistview.mainactivity$progresstask.onpreexecute(mainactivity.java:66) 10-15 06:33:06.322: e/windowmanager(1322): @ android.os.asynctask.executeonexecutor(asynctask.java:587) 10-15 06:33:06.322: e/windowmanager(1322): @ android.os.asynctask.execute(asynctask.java:535) 10-15 06:33:06.322: e/windowmanager(1322): @ com.zanqi.datatolistview.mainactivity.oncreate(mainactivity.java:44) 10-15 06:33:06.322: e/windowmanager(1322): @ android.app.activity.performcreate(activity.java:5231) 10-15 06:33:06.322: e/windowmanager(1322): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1087) 10-15 06:33:06.322: e/windowmanager(1322): @ android.app.activitythread.performlaunchactivity(activitythread.java:2159) 10-15 06:33:06.322: e/windowmanager(1322): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2245) 10-15 06:33:06.322: e/windowmanager(1322): @ android.app.activitythread.access$800(activitythread.java:135) 10-15 06:33:06.322: e/windowmanager(1322): @ android.app.activitythread$h.handlemessage(activitythread.java:1196) 10-15 06:33:06.322: e/windowmanager(1322): @ android.os.handler.dispatchmessage(handler.java:102) 10-15 06:33:06.322: e/windowmanager(1322): @ android.os.looper.loop(looper.java:136) 10-15 06:33:06.322: e/windowmanager(1322): @ android.app.activitythread.main(activitythread.java:5017) 10-15 06:33:06.322: e/windowmanager(1322): @ java.lang.reflect.method.invokenative(native method) 10-15 06:33:06.322: e/windowmanager(1322): @ java.lang.reflect.method.invoke(method.java:515) 10-15 06:33:06.322: e/windowmanager(1322): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) 10-15 06:33:06.322: e/windowmanager(1322): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) 10-15 06:33:06.322: e/windowmanager(1322): @ dalvik.system.nativestart.main(native method)
here's code:
public class mainactivity extends listactivity { private context context; private static string url = "http://172.22.112.190:8080/qproject/servlet/qaction?action_flag=find"; private static final string phonenumber = "number"; private static final string peoplenumber = "info"; private static final string remarks = "remarks"; private static final string status = "status"; arraylist<hashmap<string, string>> jsonlist = new arraylist<hashmap<string, string>>(); listview lv; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); new progresstask(mainactivity.this).execute(); } private class progresstask extends asynctask<string, void, boolean> { private progressdialog dialog; private listactivity activity; private context context; // private list<message> messages; public progresstask(listactivity activity) { this.activity = activity; context = activity; dialog = new progressdialog(context); } protected void onpreexecute() { this.dialog.setmessage("progress start"); this.dialog.show(); } @override protected void onpostexecute(final boolean success) { if (dialog!=null && dialog.isshowing()){ dialog.cancel(); } listadapter adapter = new simpleadapter(context, jsonlist, r.layout.list_item, new string[] {phonenumber, peoplenumber, remarks, status}, new int[] {r.id.vehicletype, r.id.vehiclecolor, r.id.fuel, r.id.status }); setlistadapter(adapter); //select single listview item lv = getlistview(); } protected boolean doinbackground(final string... args) { jsonparser jparser = new jsonparser(); // json info url jsonarray json = jparser.getjsonfromurl(url); (int = 0; < json.length(); i++) { seek { jsonobject c = json.getjsonobject(i); string number = c.getstring(phonenumber); string info = c.getstring(peoplenumber); string remarkss = c.getstring(remarks); string statuss = c.getstring(status); hashmap<string, string> map = new hashmap<string, string>(); // add together kid node hashmap key & value map.put(phonenumber, number); map.put(peoplenumber, info); map.put(remarks, remarkss); map.put(status, statuss); jsonlist.add(map); } grab (jsonexception e) { e.printstacktrace(); } } homecoming null; } } } public class jsonparser { static inputstream istream = null; static jsonarray jarray = null; static jsonobject jasonobject = null; static string json = ""; public jsonparser() { } public jsonarray getjsonfromurl(string url) { stringbuilder builder = new stringbuilder(); httpclient client = new defaulthttpclient(); httpget httpget = new httpget(url); seek { httpresponse response = client.execute(httpget); statusline statusline = response.getstatusline(); int statuscode = statusline.getstatuscode(); if (statuscode == 200) { httpentity entity = response.getentity(); inputstream content = entity.getcontent(); bufferedreader reader = new bufferedreader(new inputstreamreader(content)); string line; while ((line = reader.readline()) != null) { builder.append(line); } } else { log.e("==>", "failed download file"); } } grab (clientprotocolexception e) { e.printstacktrace(); } grab (ioexception e) { e.printstacktrace(); } // parse string json object seek { jarray = new jsonarray( builder.tostring()); } grab (jsonexception e) { log.e("json parser", "error parsing info " + e.tostring()); } // homecoming json object homecoming jarray; } }
try code, may works you
jsonobject table = jparser.getjsonfromurl(url); jsonarray json = table.getjsonarray("table2"); (int = 0; < json.length(); i++) { seek { jsonobject c = json.getjsonobject(i); string number = c.getstring(phonenumber); string info = c.getstring(peoplenumber); string remarkss = c.getstring(remarks); string statuss = c.getstring(status); hashmap<string, string> map = new hashmap<string, string>(); // add together kid node hashmap key & value map.put(phonenumber, number); map.put(peoplenumber, info); map.put(remarks, remarkss); map.put(status, statuss); jsonlist.add(map); } grab (jsonexception e) { e.printstacktrace(); } }
i think have jasonarray in jsonobject
android json listview
Comments
Post a Comment