2013-10-11 178 views
0

我是新来的java我使用GSon json解析器。我有一个类从服务器发送和接收json数据。 为了解析JSON响应一个做到这一点:Java.Dynamic方法返回类型

strResult = new String(readBytes()); 
JsonIspResponse<JsonIspUtmInfo> res2; 
Type type = (Type) new TypeToken<JsonIspResponse<JsonIspUtmInfo>>() {}.getType(); 
res2 = gs.fromJson(strResult, type); 

像GSON文档...

我需要做的方法(GETRESPONSE)可以做到这一点:

JsonIspResponse<JsonIspUtmInfo> res2 = getResponse(request, JsonIspResponse<JsonIspUtmInfo>); 

哪有我这样做

+0

是什么类型'request'?还要注意'JsonIspResponse '不会是一个有效的参数。 –

+0

请求只是一个类,它总是一样的。我知道它不是一个有效的参数。我的意思是,它必须指定所需的返回值类型,但不知道如何去做 – user2733961

回答

0

我现在不能测试,但尝试沿着这些路线的东西:

T getResponse(String request, TypeToken<T> typeToken) { 
    return (T) gs.fromJson(request, (Type) typeToken.getType()); 
} 

// Usage 
JsonIspResponse<JsonIspUtmInfo> res2 = getResponse(request, 
    new TypeToken<JsonIspResponse<JsonIspUtmInfo>>() {}); 
+0

谢谢,它正在工作) – user2733961

0

您正在采取一种复杂的方式。 使用

JSONObject mJSONData = new JSONObject(); 

取值一一这样的:

data = mJSONData.optJSONObject("JSON_OBJECT_NAME"); 
+0

我有很多类型的返回数据,并且为每个人编写规则,并不漂亮 – user2733961