Function DE Version 12.11

@JsonSerialize

Json

Syntax

@JsonSerialize(HJSON);
@JsonSerialize(HJSON;RETURNTYPE);

Beschreibung

Diese @Function serialisiert ein JSON-Object oder JSON-Array und gibt dessen vollständige JSON-Textdarstellung zurück.

Die erzeugte JSON-Darstellung wird im kompakten Format ohne zusätzliche Einrückungen oder Zeilenumbrüche ausgegeben. Strings innerhalb des JSON werden in UTF-8 ausgegeben.
Standardmäßig wird das serialisierte JSON als VSPECBINBUFFER zurückgegeben. Dadurch können auch JSON-Strukturen serialisiert werden, deren Textdarstellung die maximale Größe eines normalen TEXT-Wertes überschreitet.
Optional kann mit TEXT RETURNTYPE der Wert "A" angegeben werden. In diesem Fall wird das Ergebnis als TEXT zurückgegeben.
Überschreitet die serialisierte JSON-Darstellung dabei die maximal zulässige Größe eines TEXT-Wertes, liefert die Funktion @ERROR.

Das übergebene VSPECHJSON (HJS) Handle bleibt unverändert und weiterhin gültig. Es muss nach seiner Verwendung separat mit @JsonRelease freigegeben werden.

VSPECHJSON HJSON:
Handle des zu serialisierenden JSON-Objects oder JSON-Arrays.
HJSON muss ein gültiges VSPECHJSON (HJS) Handle enthalten.

TEXT RETURNTYPE:
Optionaler Typ des Return-Wertes.
"A" Rückgabe als TEXT

Die Angabe ist nicht case-sensitiv. Wird RETURNTYPE nicht angegeben, erfolgt die Rückgabe als VSPECBINBUFFER.
Nach der aktuellen Implementierung führen auch andere Textwerte als "A" zur standardmäßigen Rückgabe als VSPECBINBUFFER.

Als Return-Wert liefert die @Function bei einem Fehler @ERROR, andernfalls die serialisierte JSON-Darstellung als VSPECBINBUFFER oder TEXT.

Beispiel: @JsonSerialize(HJSON);

HJSON:=@JsonCreate("Array");
@JsonAdd(HJSON;"Text1");
@JsonAdd(HJSON;"Text2");
@JsonAdd(HJSON;100);
JSONBUFFER:=@JsonSerialize(HJSON);
@JsonRelease(HJSON);

Das Beispiel erzeugt ein JSON-Array und serialisiert es anschließend mit dem standardmäßigen Return-Typ als VSPECBINBUFFER.
Der Buffer enthält die UTF-8-kodierte JSON-Darstellung:
["Text1","Text2",100.0]
Die Rückgabe als VSPECBINBUFFER eignet sich insbesondere für große JSON-Strukturen und für die direkte Weiterverarbeitung beispielsweise in HTTP- oder REST-Anfragen.

Beispiel: @JsonSerialize(HJSON;RETURNTYPE);

HJSON:=@JsonCreate;
@JsonAdd(HJSON;"Max Mustermann";"Name");
@JsonAdd(HJSON;42;"Age");
@JsonAdd(HJSON;TRUE;"Active";"B");
JSONTEXT:=@JsonSerialize(HJSON;"A");
@JsonRelease(HJSON);

Das Beispiel erzeugt ein JSON-Object, fügt drei Werte hinzu und serialisiert die vollständige JSON-Struktur anschließend als TEXT.
Der Inhalt von JSONTEXT lautet:
{"Name":"Max Mustermann","Age":42.0,"Active":true}
Das JSON-Handle bleibt durch @JsonSerialize unverändert und wird anschließend mit @JsonRelease wieder freigegeben.