Sto cercando di creare una classe che utilizzi Jackson per deserializzare i POJO.Deserializzazione di un tipo generico con Jackson
Sembra che questo ...
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));
}
}
Ho 2 domande su questa implementazione.
Il primo è che sto passando il tipo di classe nei metodi in modo che objectmapper conosca il tipo che dovrebbe deserializzare. C'è un modo migliore di usare i farmaci generici?
Anche nel metodo get sto trasmettendo un oggetto restituito da objectMapper a T. Questo sembra un modo particolarmente sgradevole di farlo in quanto devo lanciare T qui e poi devo anche lanciare il tipo di oggetto dal metodo che lo sta chiamando
Sto usando Roboguice in questo progetto quindi sarebbe bello se potessi cambiare il tipo tramite l'iniezione e quindi annotare l'oggetto di cui il tipo generico di cui ho bisogno per tornare. Ho letto su TypeLiteral e mi chiedevo se poteva risolvere questo problema?
Vedi http://stackoverflow.com/questions/17400850/is-jackson-really-unable-to-deserialize-json-into-a-generic-type – lisak