使用GSON从ClassLouder类反序列化泛型类型

时间:2015-06-10 11:36:24

标签: java json generics reflection gson

我正在尝试使用GSON解析JSON文件,问题是我使用的是以前由ClassLoader加载的类。

File root = new File("./build/classes");
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { root.toURI().toURL() });

Class<?> loadedClass = Class.forName("events.Source", true,classLoader);


// JSON --> Java "Get the actual type"
Type listType = new TypeToken<ArrayList<loadedClass>>() {}.getType(); 

Gson gson = new Gson();

ArrayList<loadedClass> resourcesList = gson.fromJson(jsonString, listType);

返回 com.google.gson.internal.LinkedTreeMap ,而不是我自己的loadedClass列表。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

在这里看到ParametrizedType的默认实现:

http://www.java2s.com/Code/Java/Generics/DefaultimplementationoflinkjavalangreflectParameterizedType.htm

正确准备,这种类型可用于表示泛型类型,可以与GSON一起使用。没有经过测试,您的代码可能如下所示:

$(document).ready(function() {
    var $info = $( '.information' );
    $(".virus").click(function() {
        $info.show().find( 'p:not(.v)' ).hide().siblings().show();
    });

    $(".screenRepair").click(function() {
        $info.show().find( 'p:not(.screenInfo)' ).hide().siblings().show();
    });
});