Từ Jackson 2.5, một cách đơn giản để giải quyết đó là sử dụng phương thức
TypeFactory.constructParametricType (Class parametriised, Class ... tham số Class) cho phép xác định một JavaType
cách rõ ràng một Jackson bằng cách chỉ định lớp được tham số hóa và các loại tham số của nó.
Giả sử bạn muốn giải trừ Data<String>
, bạn có thể làm:
// the json variable may be a String, an InputStream and so for...
JavaType type = mapper.getTypeFactory().constructParametricType(Data.class, String.class);
Data<String> data = mapper.readValue(json, type);
Lưu ý rằng nếu lớp khai báo nhiều loại tham số, nó sẽ không thực sự khó hơn:
class Data <T, U> {
int found;
Class<T> hits;
List<U> list;
}
Chúng ta có thể làm:
JavaType type = mapper.getTypeFactory().constructParametricType(Data.class, String.class, Integer);
Data<String, Integer> data = mapper.readValue(json, type);