我正在使用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 );
答案 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是如何起作用的