Accessing nested object in LinkedHashMap
I'm trying to access an object in a LinkedHashMap, but get an
InvocationTargetException when I try to do it. The LinkedHashMap is the
result of a conversion from Json to a series of Java objects. The object
'List' contains every other element:
public class List{
private Clouds clouds;
private Number dt;
private String dt_txt;
private Main main;
private Rain rain;
private Sys sys;
private List weather;
private Wind wind;
}
The class also contains getters and setter. When I do the following:
for(LinkedHashMap l : ArrayList<LinkedHashMap> result.getList()) {
Number dt = (Number) l.get("dt");
}
I can access the variable dt, and it actually returns a value. However
when I try to access any other property like the 'Main' property like
this:
Main main = (Main) l.get("main");
I'll get an InvocationTargetException. Any thoughts, tips or tricks?
Edit:
Stacktrace:
09-19 14:37:59.448: E/AndroidRuntime(11192): FATAL EXCEPTION: main
09-19 14:37:59.448: E/AndroidRuntime(11192):
java.lang.ClassCastException:
com.google.gson.internal.LinkedHashTreeMap cannot be cast to
com.censored.weather.Main
09-19 14:37:59.448: E/AndroidRuntime(11192): at
com.censored.censored.VenloAppDelegate$GetWeatherTask.onPostExecute(VenloAppDelegate.java:305)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
com.censored.censored.VenloAppDelegate$GetWeatherTask.onPostExecute(VenloAppDelegate.java:1)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
android.os.AsyncTask.finish(AsyncTask.java:631)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
android.os.AsyncTask.access$600(AsyncTask.java:177)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
android.os.Handler.dispatchMessage(Handler.java:99)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
android.os.Looper.loop(Looper.java:153)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
android.app.ActivityThread.main(ActivityThread.java:5297)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
java.lang.reflect.Method.invokeNative(Native Method)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
java.lang.reflect.Method.invoke(Method.java:511)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
09-19 14:37:59.448: E/AndroidRuntime(11192): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
No comments:
Post a Comment