如何在GSON TypeToken类中使用自定义generics?

我想在GSON中将不同的List集合传递给TypeToken类。 这是我的class

public class ConvertToObject<T> { public T MappFrom(InputStream is) String json = ConvertJsonInputStream.toString(is); Gson gson = new Gson(); Type typeOfDest = new TypeToken<T>() { }.getRawType(); T lstObject = gson.fromJson(json, typeOfDest); return lstObject ; } } 

现在我想以不同的方式实例化我的类如下所示:

 AssetManager am = getApplicationContext().getAssets(); InputStream is = am.open("form.txt"); ConvertToObject<List<Form>> co = new ConvertToObject<List<Form>>(); List<Form> JsonForm = co.MappFrom(is); InputStream is2 = am.open("Messages.txt"); ConvertToObject<List<Messages>> co = new ConvertToObject<List<Messages>>(); List<Messages> JsonForm = co.MappFrom(is2); 

我的资产文件夹中有27个Json txt文件,我想将这些JSON文本文件parsing到相应的类中。 我该怎么做?

编辑:这样我赶上一个例外:

 Caused by: java.lang.ClassCastException: com.google.gson.internal.StringMap cannot be cast to com.mypackage.Form 

Solutions Collecting From Web of "如何在GSON TypeToken类中使用自定义generics?"

我这样解决了我的问题

 public class ConvertToObject<T> { public List<T> mapFrom(InputStream is, Type typeOfDest) { String json = ConvertJsonInputStream.toString(is); Gson gson = new Gson(); List<T> lstForm = gson.fromJson(json, typeOfDest); return lstForm; } 

在我的活动中,我有这个代码:

 ConvertToObject<Menu> co = new ConvertToObject<Menu>(); Type typeOfDest = new TypeToken<List<Menu>>() { }.getType(); AssetManager am = getResources().getAssets(); Log.i("AssetManager", "AssetManager"); InputStream is = null; try { is = am.open("menu.txt"); } catch (IOException e) { Log.i("InputStream", e.getMessage()); } List<Menu> JsonForm = co.mapFrom(is, typeOfDest);