我正在尝试访问 a 中的一个对象LinkedHashMap
,但是InvocationTargetException
当我尝试这样做时我得到了一个。这LinkedHashMap
是使用 Gson 库从 JSON 转换为一系列 Java 对象的结果。对象“列表”包含所有其他元素:
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;
}
该类还包含 getter 和 setter。
当我执行以下操作时:
for(LinkedHashMap l : ArrayList<LinkedHashMap> result.getList()) {
Number dt = (Number) l.get("dt");
}
我可以访问变量dt
,它实际上返回一个值。但是,当我尝试访问像这样的Main
属性这样的任何其他属性时:
Main main = (Main) l.get("main");
我会得到一个InvocationTargetException
. 有什么想法、提示或技巧吗?
编辑:
堆栈跟踪:
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)