JSON aus Objekt erzeugen
Wertauflöser - Kurzfassung
Zweck: Gibt die Datenstruktur des Eingabewerts als Text in JSON-Notation zurück.
Siehe auch: Objekt aus JSON erzeugen
Der JSON aus Objekt erzeugen-Wertauflöser gibt die Datenstruktur des Eingabewerts als Text in JSON-Notation (s. Json Datenencoder) zurück.
►HINWEIS◄ Liegt "Kein Wert" ($null) als Eingabewert an, wird der Text null ausgegeben.
Der Parameter Klasse-Feldname definiert den Namen des Felds, das im Ausgabeformat verwendet werden soll, um die "Klasse" von Objekten zu deklarieren.
Die Option Native Typen erzwingen (per Standard abgewählt) erzwingt die Verwendung nativer JSON-Datentypen, z. B. Number für Zahlenwerte und Array für Listen.
Details zum Effekt der Option "Native Typen erzwingen"
Beispiel:
Das Feld "Rollen" (roles) eines Benutzerkontos (s. Benutzer) ist als "Eindeutige Liste" (Set) definiert, da demselben Benutzer dieselbe Rolle maximal einmal zugeordnet werden können soll. Die zugeordneten Rollen werden in dieser Liste anhand ihrer ID (id) referenziert, die bei der es sich definitionsgemäß um eine Ganzzahl vom Typ Long handelt. Der Wert des roles-Felds ist also ein Set von Long-Werten. Die folgende Tabelle veranschaulicht den Effekt einer Aus- oder Abwahl der Option Native Typen erzwingen beim Erzeugen eines JSON-Strings, der den Wert des Felds "Rolle" (roles) wiedergibt:
Option |
Rückgabewert |
|
{ "class": "set", |
|
[ 1, 501, 1001 ] |
►HINWEIS◄ Da mit der Option Native Typen erzwingen unterschiedliche in Lobster Data Platform / Orchestration verwendete Datentypen auf denselben JSON-Datentyp abgebildet werden, können Informationen (zum Datentyp) verloren gehen.
Im Beispiel beinhaltet der Rückgabewert mit ausgewählter Option, nicht mehr die Information, dass die Liste als Set nur eindeutige Werte enthalten kann und dass die enthaltenen Werte definitionsgemäß vom Typ Long sind.
Konfiguration
Als Eingabewert wird ein Objekt erwartet.
Der Parameter Klasse-Feldname erlaubt als Textfeld die Eingabe eines statischen Texts, der im Ausgabeformat verwendet wird, um die "Klasse" von Objekten innerhalb des JSON-Dokuments zu deklarieren.
Als Standardwert ist die Zeichenfolge class vorbelegt.
Wird kein Klasse-Feldname angegeben, wird der Klassenname als Wert eines Felds mit dem Namen Leere Zeichenfolge ("") geschrieben.
►HINWEIS◄ Eine Struktur mit einem Feld, das eine Leere Zeichenfolge ("") kann mit dem Objekt aus JSON erzeugen-Wertauflöser auch wieder geparst werden. Ist dabei der Klasse-Feldname nicht-leer (z. B. class) wird ein Client-Objekt erzeugt, das den Klassennamen in einem unbeschrifteten Feld enthält.
Aus einem Long-Wert (1343) als Eingabewert wird dann ein Client-Objekt mit der folgenden JSON-Struktur:
{
""
:
"java.lang.Long"
,
"value"
:
"1343"
}
Der Wert (1343) kann dem Feld value nach wie vor als String entnommen werden. Der Klassenname ist - ebenfalls als String - im unbeschrifteten Feld enthalten.
Allerdings sind für ein Client-Objekt mit einem unbeschrifteten Feld folgende Restriktionen zu berücksichtigen:
Auf das unbeschriftete Feld kann - z. B. per Objekt-Feld-Wertauflöser, per get (Wert aus Datenfeld lesen) oder als Datenfeld (für Formularelemente) - nicht mehr direkt zugegriffen werden.
Der Versuch ein Client-Objekt mit einem unbeschrifteten Feld in eine Client-XML-Struktur zu überführen (z. B. per Client XML aus Objekt erzeugen oder Server XML aus Objekt erzeugen), scheitert mit Fehler (Failed to encode: INVALID_CHARACTER_ERR), da der Encoder versucht, ein XML-Element mit dem Namen "" anzulegen.
►ANMERKUNG◄ Der Server XML aus Objekt erzeugen-Wertauflöser bildet das unbeschriftete Feld dagegen problemlos auf ein property mit name="" ab.
Die Option Native Typen erzwingen steuert die Behandlung von bestimmten Datentypen (Zahlenwerte und Listen) bei der Ausgabe, für die kein 1:1-Abbild im JSON-Format existiert.
Ist die Option Native Typen erzwingen abgewählt (Standard), dann werden betreffende Datentypen bei Bedarf als Datenobjekt mit explizitem Klasse-Feld ausgegeben.
Wird die Option Native Typen erzwingen ausgewählt, dann werden Daten der betreffenden Datentypen auf den entsprechenden nativen JSON-Datentyp (Number bzw. Array) abgebildet, was das Ausagbeformat vereinfachen kann (s. Info-Box oben).
Beispiele
Die Screenshots in der folgenden Tabelle stellen die Option Native Typen erzwingen nicht dar. Soweit eine Auswahl dieser Option den dargestellten Rückgabewert überhaupt beeinflusst, enthält die Tabelle entsprechende Hinweise.
Eingabewert |
Konfigurationsbeispiel |
Rückgabewert (Zeichenfolge) |
Text |
|
"HELLO WORLD!" |
Datum/Uhrzeit |
|
{ |
bzw. mit Option { |
||
Heterogene Liste von Werten |
|
{ |
bzw. mit Option [ |
||
Firmenkonto |
►HINWEIS◄ Das Setzen der per Standard abgewählten Option Native Typen erzwingen ergäbe für den rechts dargestellten Ausschnitt aus dem Rückgabewert folgende Unterschiede:
|
{ } |