Java android parse json app crash -
i have such json:
[ { "bank":{ "central_office_address":"ddd", "license":"12312312", "location_id":3, "name":"prior", "tax_number":"12312312", "year_of_foundation":1987 } } ]
and try parse here: http://p-xr.com/android-tutorial-how-to-parse-read-json-data-into-a-android-listview/
i in education , learning-testing interests.
my activity:
package com.example.tespapp; import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import java.net.httpurlconnection; import java.net.malformedurlexception; import java.net.url; import java.util.arraylist; import java.util.hashmap; import org.apache.http.httpentity; import org.apache.http.httpresponse; import org.apache.http.client.httpclient; import org.apache.http.client.methods.httppost; import org.apache.http.impl.client.defaulthttpclient; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject; import android.os.bundle; import android.app.activity; import android.util.log; import android.view.menu; import android.view.view; import android.widget.textview; public class mainactivity extends activity { textview tvhello; private static string url = "http://localhost/denwer/banks.json"; // json node names jsonarray contacts = null; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); tvhello = (textview) findviewbyid(r.id.textview1); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); return true; } public void onclick(view v){ tvhello.settext("hello kitty!"); // hashmap listview arraylist<hashmap<string, string>> contactlist = new arraylist<hashmap<string, string>>(); // creating json parser instance jsonparser jparser = new jsonparser(); // getting json string url jsonobject json = jparser.getjsonfromurl(url); } }
jsonparser same in link below....
but can't parse or see it.... on click app crashes(
in catlog see:
04-05 16:30:43.713: e/trace(1218): error opening trace file: no such file or directory (2) 04-05 16:30:44.943: d/libegl(1218): loaded /system/lib/egl/libegl_emulation.so 04-05 16:30:44.953: d/(1218): hostconnection::get() new host connection established 0x2a149640, tid 1218 04-05 16:30:45.113: d/libegl(1218): loaded /system/lib/egl/libglesv1_cm_emulation.so 04-05 16:30:45.123: d/libegl(1218): loaded /system/lib/egl/libglesv2_emulation.so 04-05 16:30:45.433: w/egl_emulation(1218): eglsurfaceattrib not implemented 04-05 16:30:45.803: d/openglrenderer(1218): enabling debug mode 0 04-05 16:31:29.633: d/androidruntime(1218): shutting down vm 04-05 16:31:29.633: w/dalvikvm(1218): threadid=1: thread exiting uncaught exception (group=0x40a71930) 04-05 16:31:29.703: e/androidruntime(1218): fatal exception: main 04-05 16:31:29.703: e/androidruntime(1218): java.lang.illegalstateexception: not execute method of activity 04-05 16:31:29.703: e/androidruntime(1218): @ android.view.view$1.onclick(view.java:3599) 04-05 16:31:29.703: e/androidruntime(1218): @ android.view.view.performclick(view.java:4204) 04-05 16:31:29.703: e/androidruntime(1218): @ android.view.view$performclick.run(view.java:17355) 04-05 16:31:29.703: e/androidruntime(1218): @ android.os.handler.handlecallback(handler.java:725) 04-05 16:31:29.703: e/androidruntime(1218): @ android.os.handler.dispatchmessage(handler.java:92) 04-05 16:31:29.703: e/androidruntime(1218): @ android.os.looper.loop(looper.java:137) 04-05 16:31:29.703: e/androidruntime(1218): @ android.app.activitythread.main(activitythread.java:5041) 04-05 16:31:29.703: e/androidruntime(1218): @ java.lang.reflect.method.invokenative(native method) 04-05 16:31:29.703: e/androidruntime(1218): @ java.lang.reflect.method.invoke(method.java:511) 04-05 16:31:29.703: e/androidruntime(1218): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793) 04-05 16:31:29.703: e/androidruntime(1218): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560) 04-05 16:31:29.703: e/androidruntime(1218): @ dalvik.system.nativestart.main(native method) 04-05 16:31:29.703: e/androidruntime(1218): caused by: java.lang.reflect.invocationtargetexception 04-05 16:31:29.703: e/androidruntime(1218): @ java.lang.reflect.method.invokenative(native method) 04-05 16:31:29.703: e/androidruntime(1218): @ java.lang.reflect.method.invoke(method.java:511) 04-05 16:31:29.703: e/androidruntime(1218): @ android.view.view$1.onclick(view.java:3594) 04-05 16:31:29.703: e/androidruntime(1218): ... 11 more 04-05 16:31:29.703: e/androidruntime(1218): caused by: android.os.networkonmainthreadexception 04-05 16:31:29.703: e/androidruntime(1218): @ android.os.strictmode$androidblockguardpolicy.onnetwork(strictmode.java:1117) 04-05 16:31:29.703: e/androidruntime(1218): @ java.net.inetaddress.lookuphostbyname(inetaddress.java:385) 04-05 16:31:29.703: e/androidruntime(1218): @ java.net.inetaddress.getallbynameimpl(inetaddress.java:236) 04-05 16:31:29.703: e/androidruntime(1218): @ java.net.inetaddress.getallbyname(inetaddress.java:214) 04-05 16:31:29.703: e/androidruntime(1218): @ org.apache.http.impl.conn.defaultclientconnectionoperator.openconnection(defaultclientconnectionoperator.java:137) 04-05 16:31:29.703: e/androidruntime(1218): @ org.apache.http.impl.conn.abstractpoolentry.open(abstractpoolentry.java:164) 04-05 16:31:29.703: e/androidruntime(1218): @ org.apache.http.impl.conn.abstractpooledconnadapter.open(abstractpooledconnadapter.java:119) 04-05 16:31:29.703: e/androidruntime(1218): @ org.apache.http.impl.client.defaultrequestdirector.execute(defaultrequestdirector.java:360) 04-05 16:31:29.703: e/androidruntime(1218): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:555) 04-05 16:31:29.703: e/androidruntime(1218): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:487) 04-05 16:31:29.703: e/androidruntime(1218): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:465) 04-05 16:31:29.703: e/androidruntime(1218): @ com.example.tespapp.jsonparser.getjsonfromurl(jsonparser.java:38) 04-05 16:31:29.703: e/androidruntime(1218): @ com.example.tespapp.mainactivity.onclick(mainactivity.java:68) 04-05 16:31:29.703: e/androidruntime(1218): ... 14 more 04-05 16:31:32.023: i/process(1218): sending signal. pid: 1218 sig: 9
also try other json, other link....
just test / code run: (not recommended on real project)
try test code on emulator/device android os lower 4+ added not allowing connections on main ui thread! visible log line caused by: android.os.networkonmainthreadexception
real solution:
you need add asynctask
or thread
, perform connection in that:
look here: asynctask android example
to make work change
public void onclick(view view){ new longoperation().execute(""); }
and add inner class:
private class longoperation extends asynctask<string, void, jsonobject> { @override protected jsonobject doinbackground(string... params) { // hashmap listview arraylist<hashmap<string, string>> contactlist = new arraylist<hashmap<string, string>>(); try { // creating json parser instance jsonparser jparser = new jsonparser(); // getting json string url jsonobject json = jparser.getjsonfromurl(url); } catch(exception ex) { // many diffent exceptions better handle seperatelly log.e("error", "error", ex); return null; } return json; } @override protected void onpostexecute(jsonobject result) { // smth result string str = (json == null)?"json = null":json.tostring(4); tvhello.settext(str); } }
Comments
Post a Comment