I use Retrofit and Jackson.There is a POJO like this:
public class QuotationHttpResult<T> {
private int code;
private Result result;
public T getData(){
return result == null ? null : result.getData();
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public Result getResult() {
return result;
}
public void setResult(Result result) {
this.result = result;
}
class Result{
private T data;
public T getData() {
return data;
}
}
}
The filed data is what I need,sometimes is a POJO,sometimes is a List. When it is a list,jackson just convert data to a LinkedHashMap even though I use the TypeReference: The Json String is :
{"code": 0,
"result": {
"data": [
{
"id": "1000",
"name": "tecent"
},
{
"id": "1001",
"name": "alibaba"
}
]
}
}
the convert code:
ObjectMapper mapper = new ObjectMapper();
QuotationHttpResult<List<MyClass>> result = mapper.readValue(json,new TypeReference<QuotationHttpResult<List<MyClass>>>() {});
MyClass is simple:
class MyClass{
String id;
String name;
}
I see this question, How to use Jackson with Generics , and everything goes well when I don't nest generics, but how can I do when generics is nested?