Releases: Korne127/CircularJsonSerialiser
Version 1.2
Neue Features:
- Die Einstellungsmöglichkeit, generierte JSON-Strings zu komprimieren, wurde hinzugefügt
Allgemeine Verbesserungen:
- Wenn Strings, Klassen aus SpecialClasses oder primitive Datentypen direkt serialisiert werden, werden sie jetzt korrekt kodiert zurückgegeben
- Strings, Klassen aus SpecialClasses und primitive Datentypen werden jetzt in so einem Fall immer korrekt direkt deserialisiert
- Falls versucht wird, einen fehlerhaften String zu deserialisieren, wird nun eine JsonParseException geworfen
- Falls ein Sonderzeichen wie z.B. ein Zeilenumbruch in einem Character gespeichert wird, wird dieser nun auch escaped (wie er bereits im String escaped wurde)
- Falls sich Whitespace vor oder nach dem Json befindet, wird dies nun ignoriert
Bugs behoben:
- Wenn vorher ein Zeilenumbruch oder ein Tabulator als char gespeichert wurde, führte dies zu einer Exception beim Deserialisieren; dies wurde nun behoben
Rückwärtskompatibilität
Die Rückwärtskompatibilität zu Versionen 1.0 und 1.1 ist sehr hoch (5/6).
Falls ein JSON-String, der durch eine vorherige Version erstellt wurde, mit Version 1.2 deserialisiert werden soll, kommt es in den allermeisten Fällen zu keinen Problemen.
Die Rückwärtskompatibilität ist lediglich in dem folgenden Fall eingeschränkt:
- Falls Strings, Klassen aus SpecialClasses oder primitive Datentypen in einer vorherigen Version direkt serialisiert wurden, lässt sich dies nicht mehr mit Version 1.2 deserialisieren; es kommt zu eine JsonParseException
Auch wenn bestimmte Sonderzeichen in Chars in Version 1.2 anders serialisiert werden, können die alten Versionen immer noch korrekt deserialisiert werden (außer Zeilenumbrüche und Tabulatoren, aber diese konnten auch bei vorherigen Versionen nicht deserialisiert werden, siehe Bugs behoben). Da diese Sonderzeichen allerdings nun anders serialisiert werden, wäre die Rückwärtskompatibilität, mit Version 1.2 erstellte JSON-Strings mit Version 1.1 zu deserialisieren nur mittel (3/6).
Version 1.1
Neue Features:
- BeforeSerialise-Annotation: Ermöglicht es, Methoden (optional mit Parameter) vor dem Serialisieren auszuführen
- Setter-Annotation: Ermöglicht es, Felder beim Deserialisieren zu überschreiben
- AfterDeserialise-Annotation: Ermöglicht es, Methoden (optional mit Parameter) nach dem Deserialisieren auszuführen
- Dynamisches Serialisieren: Einzelne Setter- und SerialiseIgnore-Annotationen können für einzelne (De-)Serialisierungen ignoriert werden
- ignoreCasting-Annotation: Casten von Collections / Maps kann in einzelnen Feldern ignoriert werden
- NewVariableHandling-Konfiguration: Ermöglicht es, einzustellen, wie sich der Serialiser bei neuen Variablen verhält
Kleinere Verbesserungen:
- Das Hauptobjekt wird beim seperaten Serialisieren nun als erstes in den entsprechenden String geschrieben
- Die Variablen der Oberklasse werden nun zunächst serialsiert (und dies ist per Einstellung nun änderbar)
- Verbessertes fieldInformation-System für genauere Fehlermeldungen, an welcher Stelle ein Fehler aufgetreten ist
- Fehlermeldungen bei anonymer Klasse / Lambda-Funktionen hinzugefügt, die den Fehler erklären
- Bei separater Serialisierung wird nun getestet, ob ein verlinktes Objekt bereits serialisiert wurde anstatt unnötig mehrfach zu suchen
- Exceptions, die beim (De-)Serialisieren von SpecialClasses geworfen werden, werden nun gefangen und als (De-)SerialiseException mit Informationen über das entsprechende Feld geworfen
Bugs behoben:
- Fehler behoben, dass wenn Arrays, SpecialClasses, Enums oder Strings direkt an den Serialiser angegeben wurden, dies nicht deserialised werden konnte
Codeverschönerungen:
- Aufteilung der Serialiser-Klasse in Serialiser, SerialiseUtils, SerialiseProcess und DeserialiseProcess
- Aufteilung der jsonToObject, objectToJson und getLinkedObject Methoden in mehrere kürzere Methoden
- Verbesserung der Javadoc-Kommentare
- Reihenfolge der Hilfsmethoden verbessert
Version 1.0
Version 1.0 des CircularJsonSerialisers
Die erste fertige Version des CircularJsonSerialisers.