Ein simpler oder gar nicht mal so simpler Json-Deserializer.
Implementiert mit vergleichbar wenigen Zeilen Code und dadurch schnell.
Sehr gut geeignet fuer POJOS, jedoch weniger geeignet, wenn Klassen
unendliche Kaskaden von komplexen Generics aufweisen.
Grundsaetzlich werden Generics aber unterstuetzt.
Die Grundlage bildet der
Reflector
, der standardmaessig
alle
public
Members einer Klasse akzeptiert.
Statics, Privates, Methods, usw.
muessen explizit mit
Reflector.Reflectable
annotiert sein.
Polymorphy laesst sich mittels
Reflector.Discriminators
abbilden.
Interfaces werden aktuell nicht unterstuetzt.
Die Super-Klasse sollte folglich konkret oder abstrakt sein.
Beispiel einer Base-Class-Annotation:
@Discriminators(property = "dtype", value = {
@Discriminator(type = "child1", clazz = ChildClass1.class),
@Discriminator(type = "child2", clazz = ChildClass2.class)
})
und im JSON dann folglich:
{"dtype":"child1", "key1":"value1", ... usw.}
Konzeptionell neu hier ist, dass auch ein Filter gesetzt werden kann.
Dieser bewirkt, dass nur in benannten Kontexten gewisse
Attribute beruecksichtigt werden. Dieser Filter arbeitet binaer.
Ist der Wert 0 (default) so ist dieser wirkungslos.