Android 用泛型解析json结果
我有一个应用程序,它向服务器发送REST请求并接收JSON响应。但是,应用程序上的我的REST客户端服务可能会发送几种不同类型的REST请求,这将导致不同的响应,从而导致在客户端android应用程序上创建不同类型的对象。每个响应始终是某种类型对象的数组 以下是我到目前为止的情况:Android 用泛型解析json结果,android,json,generics,gson,Android,Json,Generics,Gson,我有一个应用程序,它向服务器发送REST请求并接收JSON响应。但是,应用程序上的我的REST客户端服务可能会发送几种不同类型的REST请求,这将导致不同的响应,从而导致在客户端android应用程序上创建不同类型的对象。每个响应始终是某种类型对象的数组 以下是我到目前为止的情况: @Override protected List<?> doInBackground(String... urls) { requestType = urls[0];
@Override
protected List<?> doInBackground(String... urls) {
requestType = urls[0];
InputStream source = retrieveStream(Constants.REST_SERVER_URL + requestType);
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);
List<?> result = gson.fromJson(reader, List.class);
return result;
}
protected void onPostExecute(List<?> result) {
if(requestType.equals(Constants.GET_OSM_POI_NODES)) {
Log.v(TAG, String.valueOf(result.size()));
ArrayList<Node> nodes = new ArrayList<Node>();
for(Object o : result) {
// create a node object from the result
}
}
}
问题是,传递到onPostExecute的结果总是一个泛型对象列表,因为我希望它是泛型的。我不知道如何从这些泛型类型创建节点对象。即使我不使用泛型,传入onPostExecute的对象也是StringMap列表,我也不知道如何从这些对象创建不同类型的对象
有什么想法吗
有人知道吗?
谢谢为什么不使用JSON解析器呢?我之所以使用GSon,是因为我返回的Json可能非常大,而且我读到GSon适合处理非常大的结果。Hh,错过了您的解析器。很抱歉
[
{
"id": 353941,
"lat": 754030751,
"lon": -39701762
},
...