public class Resource<T> {
private Status status;
private int ret;
private String message;
private T data;
}
public class App {
private String appId;
}
class Test<T> {
String str= "{\"ret\":0,\"msg\":\"ok\",\"data\":[{\"appId\":\"11c53f541dee4f5bbc4f75f99002278c\"},{\"appId\":\"c6102275ce5540a59424defa1cccb8ed\"}]}";
Test() {
Resource<T> resource = JSON.parseObject(str, new TypeReference<Resource<T>>(){});
Log.d(TAG, resource + "");
}
}
调用方法为:
new Test<ArrayList<App>>();
最后ArrayList没有解析出来,而是JSONArray,是我使用方式不对吗
5条答案
按热度按时间tgabmvqs1#
b91juud32#
@kimmking hello,你这样写是没问题的,因为在
new TypeReference<Resource<ArrayList<App>>>(){}
已经指定是ArrayList<App>
了,我这边是用的泛型
new TypeReference<Resource<T>>(){}
,这样只能解成JSONArraybrtdzjyr3#
https://github.com/alibaba/fastjson/wiki/TypeReference
参考其中的单参数和双参数的例子
8wtpewkr4#
@wenshao
我在处理数据的过程中怎么拿到第二个参数
type
呢。我想到的种方式是
Response
extend一个super class,在super class中拿到泛型的类型然后在解析时
感觉这样好麻烦,还有别的调用方式吗
wooyq4lh5#
@wenshao@kimmking 麻烦看下上面的问题