Ich versuche, den inneren Klassen-Typ für ein Objekt als JSON übergeben zu werden, aber während ich gelesen habe Tonnen hier und Jacksons Website scheint ich nicht in der Lage, die zu bekommen richtige Kombination, also wenn jemand anderes irgendwelche Hinweise hat, würden sie sehr geschätzt werden. Ich habe unten ein paar Ausschnitte geposted und alle Getter und Setter entfernt, ich habe nicht gedacht, dass sie gepostet werden müssen. Ich benutze Jackson 2.2.Jackson Json Art Mapping innere Klasse
Die Klassen Ich bin versucht zu deserialisieren:
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;
}
}
Der Code, den ich deserialisieren bin mit:
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);
Meine JSON Testdaten:
{ "type": "org.json.Car", "criteria": { "restriction": "eq", "value": "bmw" } }
Die innere Klasse muss statisch sein. Siehe http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html – Paul
Wenn ich diesen Anweisungen folge, bekomme ich den Fehler: "Der Membertyp [Klassenname] kann nicht als statisch deklariert werden; statische Typen können nur sein In statischen oder Top-Level-Typen deklariert " – coltonfranco
In diesem Blogpost finden Sie weitere Informationen zu Schachtelklassen und Jacksons. Serialisierung funktioniert gut, aber Deserialisierung wird nicht, wenn die Klasse statisch verschachtelt ist - http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html – testerjoe2