Android Gson.fromJson error -


i've completed tutorial how connect json url , parse content using gson library. code works fine url specified in tutorial, tryed modify work this url. tryed display 1 field second ulr, base field, can't work. here code, please help:

public class jsonparsingactivity extends activity {  string url = "http://api.openweathermap.org/data/2.5/weather?q=london,uk";  @override public void oncreate(bundle savedinstancestate) {      super.oncreate(savedinstancestate);     setcontentview(r.layout.main);      inputstream source = retrievestream(url);      gson gson = new gson();// main gson class      reader reader = new inputstreamreader(source);      searchresponse response = gson.fromjson(reader, searchresponse.class); //gson.fromjson(string, class)      toast.maketext(this, response.base, toast.length_short).show(); }  private inputstream retrievestream(string url) {      defaulthttpclient client = new defaulthttpclient();       httpget getrequest = new httpget(url);      try {         httpresponse getresponse = client.execute(getrequest);        final int statuscode = getresponse.getstatusline().getstatuscode();         if (statuscode != httpstatus.sc_ok) {            log.w(getclass().getsimplename(),                "error " + statuscode + " url " + url);            return null;        }         httpentity getresponseentity = getresponse.getentity();        return getresponseentity.getcontent();      }      catch (ioexception e) {        getrequest.abort();        log.w(getclass().getsimplename(), "error url " + url, e);     }      return null;  } } 

and searchresponse class:

public class searchresponse {  @serializedname("base") public string base; } 

log file:

05-21 14:11:35.559: e/androidruntime(15079): fatal exception: main 05-21 14:11:35.559: e/androidruntime(15079): java.lang.runtimeexception: unable           start activity             componentinfo{com.example.myproject/com.example.myproject.jsonparsingactivity}: java.lang.illegalargumentexception: expected class, parameterizedtype, or genericarraytype, <com.example.myproject.jsonparsingactivity$1@405494a8> of type com.example.myproject.jsonparsingactivity$1 05-21 14:11:35.559: e/androidruntime(15079):    @ android.app.activitythread.performlaunchactivity(activitythread.java:1651) 05-21 14:11:35.559: e/androidruntime(15079):    @     android.app.activitythread.handlelaunchactivity(activitythread.java:1667) 05-21 14:11:35.559: e/androidruntime(15079):    @ android.app.activitythread.access$1500(activitythread.java:117) 05-21 14:11:35.559: e/androidruntime(15079):    @ android.app.activitythread$h.handlemessage(activitythread.java:935) 05-21 14:11:35.559: e/androidruntime(15079):    @ android.os.handler.dispatchmessage(handler.java:99) 05-21 14:11:35.559: e/androidruntime(15079):    @ android.os.looper.loop(looper.java:123) 05-21 14:11:35.559: e/androidruntime(15079):    @ android.app.activitythread.main(activitythread.java:3687) 05-21 14:11:35.559: e/androidruntime(15079):    @ java.lang.reflect.method.invokenative(native method) 05-21 14:11:35.559: e/androidruntime(15079):    @ java.lang.reflect.method.invoke(method.java:507) 05-21 14:11:35.559: e/androidruntime(15079):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:867) 05-21 14:11:35.559: e/androidruntime(15079):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:625) 05-21 14:11:35.559: e/androidruntime(15079):    @ dalvik.system.nativestart.main(native method) 05-21 14:11:35.559: e/androidruntime(15079): caused by: java.lang.illegalargumentexception: expected class, parameterizedtype, or genericarraytype, <com.example.myproject.jsonparsingactivity$1@405494a8> of type com.example.myproject.jsonparsingactivity$1 05-21 14:11:35.559: e/androidruntime(15079):    @ com.google.gson.internal.$gson$types.getrawtype($gson$types.java:145) 05-21 14:11:35.559: e/androidruntime(15079):    @ com.google.gson.reflect.typetoken.<init>(typetoken.java:73) 05-21 14:11:35.559: e/androidruntime(15079):    @ com.google.gson.reflect.typetoken.get(typetoken.java:296) 05-21 14:11:35.559: e/androidruntime(15079):    @ com.google.gson.gson.fromjson(gson.java:801) 05-21 14:11:35.559: e/androidruntime(15079):    @ com.google.gson.gson.fromjson(gson.java:768) 05-21 14:11:35.559: e/androidruntime(15079):    @ com.example.myproject.jsonparsingactivity.oncreate(jsonparsingactivity.java:42) 05-21 14:11:35.559: e/androidruntime(15079):    @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1047) 05-21 14:11:35.559: e/androidruntime(15079):    @ android.app.activitythread.performlaunchactivity(activitythread.java:1615) 05-21 14:11:35.559: e/androidruntime(15079):    ... 11 more 05-21 14:11:44.729: e/androidruntime(15160): fatal exception: main 05-21 14:11:44.729: e/androidruntime(15160): java.lang.runtimeexception: unable start activity componentinfo{com.example.myproject/com.example.myproject.jsonparsingactivity}: java.lang.illegalargumentexception: expected class, parameterizedtype, or genericarraytype, <com.example.myproject.jsonparsingactivity$1@40547490> of type com.example.myproject.jsonparsingactivity$1 05-21 14:11:44.729: e/androidruntime(15160):    @ android.app.activitythread.performlaunchactivity(activitythread.java:1651) 05-21 14:11:44.729: e/androidruntime(15160):    @ android.app.activitythread.handlelaunchactivity(activitythread.java:1667) 05-21 14:11:44.729: e/androidruntime(15160):    @ android.app.activitythread.access$1500(activitythread.java:117) 05-21 14:11:44.729: e/androidruntime(15160):    @ android.app.activitythread$h.handlemessage(activitythread.java:935) 05-21 14:11:44.729: e/androidruntime(15160):    @ android.os.handler.dispatchmessage(handler.java:99) 05-21 14:11:44.729: e/androidruntime(15160):    @ android.os.looper.loop(looper.java:123) 05-21 14:11:44.729: e/androidruntime(15160):    @ android.app.activitythread.main(activitythread.java:3687) 05-21 14:11:44.729: e/androidruntime(15160):    @ java.lang.reflect.method.invokenative(native method) 05-21 14:11:44.729: e/androidruntime(15160):    @ java.lang.reflect.method.invoke(method.java:507) 05-21 14:11:44.729: e/androidruntime(15160):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:867) 05-21 14:11:44.729: e/androidruntime(15160):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:625) 05-21 14:11:44.729: e/androidruntime(15160):    @ dalvik.system.nativestart.main(native method) 05-21 14:11:44.729: e/androidruntime(15160): caused by: java.lang.illegalargumentexception: expected class, parameterizedtype, or genericarraytype, <com.example.myproject.jsonparsingactivity$1@40547490> of type com.example.myproject.jsonparsingactivity$1 05-21 14:11:44.729: e/androidruntime(15160):    @ com.google.gson.internal.$gson$types.getrawtype($gson$types.java:145) 05-21 14:11:44.729: e/androidruntime(15160):    @ com.google.gson.reflect.typetoken.<init>(typetoken.java:73) 05-21 14:11:44.729: e/androidruntime(15160):    @ com.google.gson.reflect.typetoken.get(typetoken.java:296) 05-21 14:11:44.729: e/androidruntime(15160):    @ com.google.gson.gson.fromjson(gson.java:801) 05-21 14:11:44.729: e/androidruntime(15160):    @ com.google.gson.gson.fromjson(gson.java:768) 05-21 14:11:44.729: e/androidruntime(15160):    @ com.example.myproject.jsonparsingactivity.oncreate(jsonparsingactivity.java:42) 05-21 14:11:44.729: e/androidruntime(15160):    @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1047) 05-21 14:11:44.729: e/androidruntime(15160):    @ android.app.activitythread.performlaunchactivity(activitythread.java:1615) 05-21 14:11:44.729: e/androidruntime(15160):    ... 11 more 

i've never tried deserialize reader using gson, i've had luck jsonelement.

    httpurlconnection connection = null;     jsonelement jsonresponse = null;      try {         // create connection         string url = "http://someplace";         url endpoint = new url(url);         connection = (httpurlconnection) endpoint.openconnection();          // fetch data server         jsonreader reader = new jsonreader(new inputstreamreader(connection.getinputstream()));         jsonparser parser = new jsonparser();         jsonresponse = parser.parse(reader);          // parse response         gson gson = new gson();         yourresponseclass response;         try {             response = gson.fromjson(jsonresponse, yourresponseclass.class);         } catch (jsonsyntaxexception e) { }          // object      } catch (exception e) {      } {         // close connection if it's open         if (connection != null) {             connection.disconnect();         }     }      ... 

your deserialized class seems ok @ first glance, remember when deserializing gson, types in destination class must match json, e.g. arrays, primitive types, etc.


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -