Java Gson:解析泛型集合
是否可以创建一个方法来解析来自jsson的泛型集合?我上面的aproach不起作用,因为在运行时gson在这里返回linkedhasmap的ArrayList,但是在编译时没有错误Java Gson:解析泛型集合,java,generics,gson,Java,Generics,Gson,是否可以创建一个方法来解析来自jsson的泛型集合?我上面的aproach不起作用,因为在运行时gson在这里返回linkedhasmap的ArrayList,但是在编译时没有错误 private <T> ArrayList<T> readArray(String json) { Gson gson = new Gson(); Type collType = new TypeToken<ArrayList<T>>() { }
private <T> ArrayList<T> readArray(String json)
{
Gson gson = new Gson();
Type collType = new TypeToken<ArrayList<T>>() {
}.getType();
return gson.fromJson(json, collType);
}
private ArrayList readArray(字符串json)
{
Gson Gson=新的Gson();
Type collType=new TypeToken,但我没有找到真正有效的解决方案。默认情况下,在v2.1中,如果不执行任何操作,它将被反序列化为列表
您可以为该集合类型注册TypeAdapterFactory,然后确定实际反序列化的对象类型。TypeToken要求您在编译时固定类型参数。例如ArrayList
或其他。ArrayList
将不起作用
如果您可以在运行时以某种方式传递T的类对象,那么您可以尝试我在中建议的解决方案,它似乎比大多数人想象的要简单:
Type collectionType = new TypeToken<ArrayList<Person>>(){}.getType();
ArrayList<Person> persons = gson.fromJson(response, collectionType);
Type collectionType=new-TypeToken(){}.getType();
ArrayList persons=gson.fromJson(响应,集合类型);
不需要像newacct在回答中建议的那样复制ParameteredTypeImpl类