Próbuję utworzyć wewnętrzny typ klasy dla obiektu przekazywanego jako JSON, ale gdy czytałem tu tony, a także stronę Jacksona, nie wydaje mi się, żebym mógł uzyskać odpowiednia kombinacja, więc jeśli ktokolwiek inny ma jakieś wskazówki, będzie bardzo ceniony. Poniżej zamieściłem kilka fragmentów i usunąłem wszystkie pobierające i ustawiające, nie sądziłem, że będą wymagały publikowania. Używam Jackson 2.2.Jackson Json Typ Mapowanie Wewnętrzna klasa
Klasy I 'm próby deserializowania:
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;
}
}
kodu używam do deserializowania:
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);
Moje badania JSON dane:
{ "type": "org.json.Car", "criteria": { "restriction": "eq", "value": "bmw" } }
Wewnętrzna klasa musi być statyczna. Zobacz http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html – Paul
Podczas wykonywania tych instrukcji pojawia się błąd: "Typu członka [nazwy klasy] nie można zadeklarować statycznie, typy statyczne mogą być tylko zadeklarowane w typach statycznych lub najwyższego poziomu " – coltonfranco
Więcej informacji o klasach zagnieżdżania i jackson można znaleźć w tym poście na blogu. Serializacja działa dobrze, ale deserializacja nie zajdzie, chyba że klasa jest typem zagnieżdżonym - http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html – testerjoe2