Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gson:解析泛型集合_Java_Generics_Gson - Fatal编程技术网

Java Gson:解析泛型集合

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>>() { }

是否可以创建一个方法来解析来自jsson的泛型集合?我上面的aproach不起作用,因为在运行时gson在这里返回linkedhasmap的ArrayList,但是在编译时没有错误

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类