0

我正在尝试访问 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)
4

0 回答 0