google gson fromjson()TypeToken

时间:2016-12-16 12:15:47

标签: java json gson

我无法理解Google TypeToken api GSON方法的fromJson。下面的代码对我来说非常复杂......

        Gson gson = new Gson();
        ArrayList<ID_Name_Address> al = new ArrayList<ID_Name_Address>();
        al = gson.fromJson(json, new TypeToken<List<ID_Name_Address>>(){}.getType());

这里到底发生了什么:new TypeToken<List<ID_Name_Address>>(){}.getType()

这是一个匿名课吗?对这段代码有所了解。

1 个答案:

答案 0 :(得分:3)

TypeToken是一个在运行时获取有关泛型的信息的技巧,这要归功于具有完全指定的泛型超类的类通过反射使这些数据可用。

GSON用户指南中有一节关于序列化/反序列化泛型:https://github.com/google/gson/blob/master/UserGuide.md#TOC-Serializing-and-Deserializing-Generic-Types

要专门回答您的问题,它会创建一个匿名对象,在其超类数据中捕获TypeToken的泛型。然后通过泛型提取该数据,并将其打包为Type实例和getType(),以避免因上述匿名类导致的内存泄漏。