Android 用泛型解析json结果

Android 用泛型解析json结果,android,json,generics,gson,Android,Json,Generics,Gson,我有一个应用程序,它向服务器发送REST请求并接收JSON响应。但是,应用程序上的我的REST客户端服务可能会发送几种不同类型的REST请求,这将导致不同的响应,从而导致在客户端android应用程序上创建不同类型的对象。每个响应始终是某种类型对象的数组 以下是我到目前为止的情况: @Override protected List<?> doInBackground(String... urls) { requestType = urls[0];

我有一个应用程序,它向服务器发送REST请求并接收JSON响应。但是,应用程序上的我的REST客户端服务可能会发送几种不同类型的REST请求,这将导致不同的响应,从而导致在客户端android应用程序上创建不同类型的对象。每个响应始终是某种类型对象的数组

以下是我到目前为止的情况:

@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
    }, 
     ...