Um Instanzen von Klassen mit der Anweisung CALL TRANSFORMATION nach
JSON zu transformieren oder aus
JSON-Daten zu erzeugen, müssen ihre Klassen das Interface IF_SERIALIZABLE_OBJECT
implementieren. Die Darstellung der Instanz einer Klasse (Objekt) als Objektkomponente des Objekts %heap erfolgt in der Form:
Der Name key ist der Schlüssel, über den das Objekt referenziert
wird. Der Wert von key ist selbst ein Objekt, dessen Objektkomponenten die Klasse und die Attribute des referenzierten ABAP-Objekts darstellen.
Der zeichenartige Wert class der Komponente %TYPE
gibt die Klasse des Objekts an. Für class gilt das Gleiche wie für den Elementnamen class der
asXML-Darstellung, wobei in asJSON der Namensraum,
der in asXML angibt wo die Klasse definiert ist, immer aufgelöst vor dem Klassennamen aufgeführt wird.
Die Komponente %VAL stellt die Attributwerte des Objekts dar. Der Wert von
%VAL ist selbst ein Objekt. Die Komponenten part
sind Objekte, welche die Werte der Instanzattribute einzelner Objektteile enthalten. Für die
Objektteile und ihre Namen part gilt das Gleiche wie für die Unterelemente <part> der
asXML-Darstellung.
Die Komponenten eines Objektteils part stellen die Werte der Instanzattribute
des Objekts in ihrer kanonischen Darstellung unter ihrem Namen dar. Für die Namen gilt das Gleiche wie für die entsprechenden Elemente der
asXML-Darstellung. Statische Attribute werden nicht berücksichtigt.
Eine optionale Komponente %classVersion eines Objektteils part
enthält die Version der Klasse des Objektteils in zeichenartiger Darstellung. Für die Version der Klasse gilt das Gleiche wie für das Attribut classVersion der
asXML-Darstellung.
Das Tag-InterfaceIF_SERIALIZABLE_OBJECT hat für JSON die gleiche Bedeutung wie für
asXML. D.h. es legt fest, welche Attribute
einer Klasse serialisiert werden und es können Hilfsmethoden implementiert werden, die ein angepasstes Verhalten bewirken (siehe das zugehörige
Beispiel).