我有一个从服务中读取JSON的方法,我正在使用Gson进行序列化,并使用类型参数编写了以下方法.
public T getDeserializedJSON(Class<T> aClass,String url)
{
Reader r = getJSONDataAsReader(url);
Gson gson = new Gson();
return gson.fromJson(r, aClass);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用json,它只返回一个类型的数组,例如
[
{ "prop":"value" }
{ "prop":"value" }
]
Run Code Online (Sandbox Code Playgroud)
我有一个映射到这个对象的java类,我们称之为MyClass.但是要使用我的方法,我需要这样做:
RestClient<ArrayList<MyClass>> restClient = new RestClient<ArrayList<MyClass>>();
ArrayList<MyClass> results = restClient.getDeserializedJSON(ArrayList<MyClass>.class, url);
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚它的语法.仅传递ArrayList.class不起作用.
那么有没有办法可以摆脱Class参数或者如何获取MyClass的ArrayList类?
Eya*_*der 26
您可以使用Bozho的解决方案,或使用以下方法避免创建临时数组列表:
Class<List<MyClass>> clazz = (Class) List.class;
Run Code Online (Sandbox Code Playgroud)
此解决方案的唯一问题是您必须使用@SuppressWarnings("未选中")禁止未经检查的警告.
你不能.你必须使用不安全的演员表:
Class<List<MyClass>> clazz =
(Class<List<MyClass>>) new ArrayList<MyClass>().getClass();
Run Code Online (Sandbox Code Playgroud)
作为后续行动,我在Gson文档中发现了这一点.
Type listType = new TypeToken<List<String>>() {}.getType();
Run Code Online (Sandbox Code Playgroud)
这解决了安全获取类型的问题,但TypeToken类特定于Gson.
| 归档时间: |
|
| 查看次数: |
27205 次 |
| 最近记录: |