ExtendedJsonCreationUnit
Gruppe |
|
Funktion |
Die JsonCreationUnit erzeugt aus dem Zielbaum ein JSON-Dokument. Sie ist eine Abwandlung der JsonCreationUnit. |
Beschreibung
Einleitung: Integration Units. Setzen Sie in Phase 6 in den Inhalts-Einstellungen eines Antwortwegs den Inhalt auf Ausgabe von IU.
Die ExtendedJsonCreationUnit erzeugt aus dem Zielbaum ein JSON-Dokument.
Die Kodierung der Datei ist dabei immer UTF-8. Pro Datenblatt wird ein Objekt {inhalt} erzeugt. Bei mehreren Datenblättern werden diese Objekte in eine Liste [{inhalt1},{inhalt2}] geschrieben.
Wird die Eigenschaft XML/JSON Behandlung eines Zielknotens auf Exkludieren gesetzt, wird dieser nicht von der ExtendedJsonCreationUnit verarbeitet.
Zahlen nach # in Feld- und Knotennamen werden bei der JSON-Generierung ignoriert.
Beschreibung der Parameter
Parametername |
Erlaubte Werte |
Default-Wert |
Beschreibung |
Enable '_name' field handling |
true, false |
false |
Siehe Parameter Use description as field/node name. |
Escape < and > |
true, false |
false |
Die beiden Zeichen < und > werden von der Integration Unit maskiert (escaped). Das Ergebnis ist < und > Diese Option sollte auf true gestellt werden, falls die Integration Unit für Formulare benutzt wird. Damit kann man JavaScript Injection unterbinden. |
Pretty print |
true, false |
true |
Falls true, wird die JSON-Datei formatiert erzeugt. |
Resolve OData names |
true, false |
false |
Ein Name wie @company.com wäre in JSON erlaubt, wird aber von dieser Integration Unit maskiert (escaped). Das Ergebnis wäre __at__company__dot__com Soll diese Maskierung nicht vorgenommen werden, dann setzen Sie diese Option auf true. |
Start at node |
<Knotenname> |
|
Ist ein Knotenname gesetzt, beginnt die Erzeugung der JSON-Datei erst bei diesem Knoten. Ist kein Wert angegeben oder der Wert root, dann wird der (nicht sichtbare) Top-Level-Knoten als transparenter Knoten verwendet. |
Use description as field/node name |
true, false |
false |
Bei true wird der Knoten-/Feld-Name aus dem Wert des Attributs Beschreibung erzeugt. Hinweis: Will man den Namen eines Knotens zur Laufzeit generieren, kann ein Feld mit Suffix _name zur Umbenennen des zugehörigen Oberknoten verwendet werden. Der Name des JSON-Objekts wird dann nicht mehr aus dem Knotennamen erzeugt, sondern aus dem Wert (nicht Namen) des Feldes. Als Präfix des Feldnamens muss der Name des umzubenennenden Knotens verwendet werden. Soll also Oberknoten POS umbenannt werden, muss das Umbenennungsfeld POS_name heißen. Wichtiger Hinweis: Der Parameter Enable '_name' field handling muss dazu den Wert true haben. Hinweis: Mit dieser Methode kann nicht der Top-Level-Knoten (Root-Knoten) umbenannt werden. Hinweis: Wird über einen Knoten ein Array erzeugt (siehe Knoten MyArray in den Beispielen unten), dann wird der Feldwert von MyArray_name der letzten Iteration verwendet. |
Write empty '_val' arrays |
true, false |
false |
Falls true, dann wird bei der Erzeugung von Arrays über Knoten und _val-Feld (siehe unten) auch ein leeres Array geschrieben. Bei false nicht. |
Write empty fields not as null |
true, false |
false |
Falls true und Parameter Write empty/null field values ist auch true, dann wird statt dem Wert null der Wert "" geschrieben. |
Write empty/null field values |
true, false |
false |
Falls true, werden Felder mit gesetztem Empty Flag in das JSON-Dokument übernommen mit Wert null. Siehe auch Parameter Write empty fields not as null. |
Write values type safe |
true, false |
true |
Falls true, werden bei Feldern vom Typ Integer, Float, Double, BigInteger, BigDecimal und Boolean keine Hochkommas gesetzt. Wichtiger Hinweis: Diese Einstellung greift nicht, wenn eine Vorlage verwendet wird. |
Beispiel
Aus folgendem Zielbaum wird ein JSON-Dokument erzeugt.
Der Knoten der obersten Ebene wird immer als Objekt dargestellt (in der JsonCreationUnit kann dieses Verhalten konfiguriert werden).
{"Rechnung":
{
"bestellnr":"4711",
"ilnkaeufer":"400000045687",
"ilnlieferant":"123456789",
"lieferscheinnr":"0815",
"position":[
{"ArtNrLieferant":"87490","EAN":"3654878784","inhalt":"Wurst","masseinheit":"ST","menge":"200","positionsNr":"1","preis":"30","ustsatz_pos":"19"},
{"ArtNrLieferant":"8786767","EAN":"546546","masseinheit":"ST","menge":"1","positionsNr":"2","preis":"56"}
],
"rechnungsnr":"08154711",
"ustsatz1":"19",
"ustsatz2":"7",
"waehrung":"EUR"
}
}
Transparente Knoten
Blau markierte Knoten haben die Zielstruktur-Knoten-Eigenschaft XML/JSON Behandlung=Transparent.
Zielbaum |
Ergebnis |
|
|
Derselbe transparente Knoten darf nicht mehrfach erzeugt werden. Falls das passiert, bricht die Integration Unit mit einem Fehler ab. Hinweis: Bei transparenten Knoten mit der Eigenschaft Maximum > 1, wird eine Warnung im Log ausgegeben.
Zielbaum |
Ergebnis |
-->
|
Error: Node 'TransparentNode_Error' returns an array but has set attribute 'transparent' which is not valid |
Es ist allerdings möglich mehrere transparente Knoten zu verwenden. Wie Sie im Beispiel sehen können, werden dann die Werte gleichnamiger Felder zusammengefasst (Wir erinnern uns: value#1 und value#2 werden im JSON-Dokument beide zu value). Hinweis: Es handelt sich hier um ein Array (siehe unten).
Zielbaum |
Ergebnis |
|
|
Arrays
Ein Array kann über gleichnamige Einzelfelder erzeugt werden. Bei Feldnamen wird alles ab # ignoriert. Somit wird ArrayValue#1-3 zu ArrayValue.
Zielstruktur |
Ergebnis |
|
|
Alternativ können einfache Arrays/Listen auch mit einer Knoten/Feld-Kombination gelöst werden. Dabei darf der Knoten nur ein Feld enthalten. Der Feldname muss gleich dem Knotennamen plus der Endung _val lauten. Der Knoten wird dabei mehrfach durchlaufen.
Zielstruktur |
Ergebnis |
|
|
Möchten Sie ein unbenanntes Array auf diese Art erzeugen, muss sich der Knoten MyArray in einem Oberknoten mit der Zielstruktur-Knoten-Eigenschaft XML/JSON Behandlung=Array befinden. Der Knoten MyArray selbst kann dabei den Eigenschaftswert Array, Normal oder Transparent haben.
Zielstruktur |
Ergebnis |
|
|
Möchten Sie nun noch die Klammern des Arrays entfernen, um nur die Werte zu erhalten, können Sie die Zielstruktur-Knoten-Eigenschaft XML/JSON Behandlung des Knotens MyArray auf Array Transparent setzen.
Zielstruktur |
Ergebnis |
|
|
Hinweis: Mit den letzten beiden Methoden können Sie auch verschachtelte Arrays erzeugen, was mit den ersten beiden Methoden nicht möglich ist.