Sto provando a creare il tipo di classe interna per un oggetto passato come JSON ma mentre ho letto tonnellate qui e il sito di Jackson non sembra essere in grado di ottenere il giusta combinazione quindi se qualcun altro ha dei suggerimenti sarebbe molto apprezzato. Ho postato alcuni frammenti di seguito e rimosso tutti i getter e setter, non ho capito che avevano bisogno di postare. Sto usando Jackson 2.2.Jackson Json Type Mapping Inner Class
Le classi che sto tentando di deserializzare:
public class Settings {
private int offset;
private int limit;
private String type;
private Map<String, Criteria> criteria;
public class Criteria {
private String restriction;
private Object value;
}
}
Il codice che sto usando per deserializzare:
ObjectMapper om = new ObjectMapper();
TypeFactory tf = om.getTypeFactory();
JavaType map = tf.constructMapLikeType(Map.class, String.class, Criteria.class);
JavaType type = typeFactory.constructType(Settings.class, map);
Settings settings = om.readValue(entity, type);
miei dati di test JSON:
{ "type": "org.json.Car", "criteria": { "restriction": "eq", "value": "bmw" } }
La classe interna deve essere statica. Vedi http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html – Paul
Quando seguo queste istruzioni ottengo l'errore: "Il tipo di membro [nome classe] non può essere dichiarato statico, i tipi statici possono essere solo dichiarato in tipi statici o di primo livello " – coltonfranco
Fai riferimento a questo post del blog per maggiori informazioni sulle classi di nidificazione e jackson. La serializzazione funziona bene, ma la deserializzazione non avverrà a meno che la classe non sia di tipo statico annidato - http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html – testerjoe2