传递参数类型的方法这个类是从供应商库:作为参数
public class JsonParser {
public <T> T parse(String json, Class<T> type) { ... }
}
这是我的模型:
public class Video {
@Key
private String title;
public String getTitle() {
return title;
}
}
public class Response<TResult> {
@Key
private TResult result;
public TResult getResult() {
return result;
}
// ...
}
此代码:
JsonParser parser = new JsonParser();
String json = "{ \"title\": \"Hello world\" }";
Video video = parser.parse(json, Video.class);
此代码没有按无法正常工作:(语法错误:Response<Video>.class
)
JsonParser parser = new JsonParser();
String json = "{ \"result\" : { \"title\": \"Hello world\" } }";
Response<Video> videoResponse = parser.parse(reader, Response<Video>.class);
此代码:
public class VideoResponse extends Response<Video> {
}
...
JsonParser parser = new JsonParser();
String json = "{ \"result\" : { \"title\": \"Hello world\" } }";
Response<Video> videoResponse = parser.parse(reader, VideoResponse.class);
我的问题是:如何通过Response<Video>
类parse
方法参数,而无需创建VideoResponse
这样。 (在我的计划中,有类似Video
众多车型,我不想重复我的代码创建空类VideoResponse
,UserResponse
,CommentResponse
,ActivityResponse
等)
感谢您的帮助。我使用的库是Google的JsonObjectParser http://javadoc.google-http-java-client.googlecode.com/hg/1.13.1-beta/com/google/api/client/json/JsonObjectParser.html。基础,它使用JsonParser http://javadoc.google-http-java-client.googlecode.com/hg/1.13.1-beta/com/google/api/client/json/JsonParser.html,我会尝试使用' #parse(Object,CustomizeJsonParser)' – 2013-03-24 07:23:51
@JacobDam - 它看起来像库可以使用'Type'反序列化。获得该方法的一种方法是拉入Google GoGles库并执行类似'new TypeToken>(){}。getType()'。当然,如果你拉入Gson库,你可以用它来解析! –
Perception
2013-03-24 07:33:10