Deserializacja rodzaju ogólnego za pomocą Jacksona
Próbuję stworzyć klasę, która używa Jacksona, aby zneutralizować POJO.
To wygląda tak...
public class DeserialiserImp<T> implements Deserialiser<T> {
protected ObjectMapper objectMapper = new ObjectMapper();
@Override
public T get(String content, Class clazz) throws IOException {
return (T) objectMapper.readValue(content, clazz);
}
@Override
public List<T> getList(String content, Class clazz) throws IOException {
return objectMapper.readValue(content, TypeFactory.collectionType(ArrayList.class, clazz));
}
}
Mam 2 pytania dotyczące tej implementacji.
Po pierwsze, przekazuję typ klasy do metod, więc obiektmapper zna typ, który powinien deserializować. Czy istnieje lepszy sposób na stosowanie leków generycznych?
Również w metodzie get rzucam obiekt zwrócony z obiektu objectMapper do T. Wydaje się to szczególnie paskudnym sposobem na zrobienie tego, ponieważ muszę tu rzucić T, a następnie muszę także rzutować typ obiektu z metody, która go wywołuje.
Używam Roboguice w tym projekcie, więc byłoby miło, gdybym mógł zmienić typ poprzez wtrysk, a następnie opisać obiekt, którego typ Generic potrzebuję, aby powrócił. Czytałem oTypeLiteral i zastanawiasz się, czy to może rozwiązać ten problem?