JsonCreationUnit
Gruppe |
|
Funktion |
Die JsonCreationUnit erzeugt aus dem Zielbaum ein JSON-Dokument. |
Beschreibung
Diese Integration Unit ist veraltet (deprecated). Bitte Verwenden Sie für Neuentwicklungen die ExtendedJsonCreationUnit.
Die JsonCreationUnit 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 JsonCreationUnit verarbeitet.
Zahlen nach # in Feld- und Knotennamen werden bei der JSON-Generierung ignoriert. Siehe Erzeugung von Arrays unten.
Beschreibung der Parameter
Parametername |
Erlaubte Werte |
Default-Wert |
Beschreibung |
Decode unicode values |
true, false |
false |
Wenn false, dann werden bestimmte Zeichen (z. B. ", <, >) durch Unicode-Escape-Sequences ersetzt. Bei true wird das nicht gemacht, außer beim Zeichen ", welches ersetzt wird durch \u0022. |
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. |
Force array creation for nodes with max > 1 |
true, false |
true |
Falls true, wird für Knoten mit einem Maximum-Wert > 1 immer ein Array erzeugt, auch wenn der Knoten nur einmal betreten wurde. |
Pretty print |
true, false |
false |
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. Ohne Knotenname wird der vollständige Baum erzeugt. |
Use description as field/node name |
true, false |
false |
Ist true eingestellt und für ein Feld bzw. einen Knoten die Eigenschaft Beschreibung gefüllt, dann wird in der JSON-Datei anstatt des Feld-/Knotennamens der Wert der Eigenschaft Beschreibung verwendet. |
Use transparent nodes |
true, false |
false |
Falls true, wird die Eigenschaft "XML/JSON Behandlung=Transparent" eines Zielknotens berücksichtigt. Siehe im Beispiel unten die Hinweise dazu. |
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 top level nodes as objects |
true, false |
true |
Falls true, werden alle Knoten der Root-Ebene als eigene Objekte ausgegeben, z. B. {"knotenname":{"inhalt"}}. Falls der Parameter false ist, werden die Inhalte direkt geschrieben. |
Write values type safe |
true, false |
false |
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.
Ist der Parameter Write top level nodes as objects auf true gesetzt, wird folgende Datei erzeugt.
{"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"
}
}
Ist der Parameter Write top level nodes as objects auf false gesetzt, wird folgende Datei erzeugt.
{
"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".
Folgend die Ergebnisse, abhängig vom Integration-Unit-Parameter Use transparent nodes.
Zielbaum |
Ergebnis (Use transparent nodes = true) |
Ergebnis (Use transparent nodes = false) |
|
|
|
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 (Use transparent nodes = true) |
Ergebnis (Use transparent nodes = false) |
-->
|
Error: transparent node 'TransparentNode_Error' may not have more than one iteration |
|
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 (Use transparent nodes = true) |
Ergebnis (Use transparent nodes = false) |
|
|
|
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 generiert 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. Wichtiger Hinweis: Das funktioniert nicht bei mehreren gleichnamigen Knoten dieser Art. Gäbe es also einen Knoten MyArray und weiter unten in der Struktur einen weiteren Knoten MyArray#2, dann würde der beschriebene Mechanismus nur beim ersten Knoten MyArray greifen.
Zielstruktur |
Ergebnis |
|
|