Dari Jackson 2.5, cara elegan untuk menyelesaikannya adalah menggunakan metode
TypeFactory.constructParametricType (Class parametrized, Class ... parameterClasses) yang memungkinkan untuk mendefinisikan straigthly Jackson JavaType
dengan menentukan kelas parameter dan tipe parameternya.
Seandainya Anda ingin deserialize Data<String>
, Anda dapat melakukan:
// 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);
Perhatikan bahwa jika kelas mendeklarasikan beberapa tipe parameter, itu tidak akan menjadi lebih sulit:
class Data <T, U> {
int found;
Class<T> hits;
List<U> list;
}
Kita bisa lakukan :
JavaType type = mapper.getTypeFactory().constructParametricType(Data.class, String.class, Integer);
Data<String, Integer> data = mapper.readValue(json, type);