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

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -