我想将jackson json库用于通用方法,如下所示:
public MyRequest<T> tester() {
TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>();
MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonRequest, typeRef);
return requestWrapper.getRequest();
}
...
public class MyWrapper<T> {
private MyRequest<T> request;
public MyRequest<T> getRequest() {
return request;
}
public void setRequest(MyRequest<T> request) {
this.request = request;
}
}
public class MyRequest{
private List<T> myobjects;
public void setMyObjects(List<T> ets) {
this.myobjects = ets;
}
@NotNull
@JsonIgnore
public T getMyObject() {
return myobjects.get(0);
}
}
现在的问题是,当我调用请求对象内的getMyObject()时,杰克逊将嵌套的自定义对象作为LinkedHashMap返回。有什么方法可以指定需要返回T对象吗?例如:如果我发送了类型为Customer的对象,则应该从该List?中返回Customer。
谢谢。
请添加getT()的实现
—
Jim Garrison
这个问题类似于stackoverflow.com/questions/6062011/…,但是他们建议使用TypeFactory指定类型。但是我不知道在编译时的类型...
—
techzen 2011年
TypeFactory的方法不需要静态类。createCollectionType等。
—
StaxMan 2011年
请分享完整的代码。我也面临着同样的问题。
—
AZ_
不是
—
凯尔·德莱尼
TypeReference
抽象的吗?