如何使用ArrayList <myclass>执行等效的“myClass []。class”?</myclass>

时间:2011-02-04 19:55:55

标签: java android

我正在使用GSON库并调用fromJson()方法: http://google-gson.googlecode.com/svn/tags/1.2.3/docs/javadocs/com/google/gson/Gson.html

我的旧代码:

String s = new GsonBuilder().create().fromJson(responseString,myClass[].class);

工作正常,但我正在将集合从数组移动到ArrayList,我无法弄清楚用于将类型传递给此方法的语法。如果我理解正确,现有代码将类型(myClass对象的数组)传递给方法,然后从JSON响应创建该方法。

但我已经尝试了所有我能想到的语法组合,而且我很难过如何做我认为会是这样的事情:

String s = new GsonBuilder().create().fromJson(responseString, ArrayList<myClass>.class );

3 个答案:

答案 0 :(得分:4)

在Gson中,您使用TypeToken来表示泛型类型。注意那里的{};这是必要的,因为它使用泛型类型信息创建了TypeToken的子类。

List<MyClass> list = new Gson().fromJson(responseString, 
    new TypeToken<ArrayList<MyClass>>(){}.getType());

答案 1 :(得分:0)

来自API docs

  

此方法反序列化指定的   Json成为指定的对象   类。它不适合使用if   指定的类是泛型类型   因为它不具有通用性   因类型而输入类型信息   Java的擦除功能。因此,   如果这个方法不应该使用   所需类型是通用类型。

为什么你需要一个arraylist?它似乎只在内部使用过。

答案 2 :(得分:0)

泛型类型在运行时被删除,因此您只能使用ArrayList.class。

我不知道这对json是如何起作用的