JsonCreationUnit

Gruppe

Integration Units

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 &lt; und &gt;

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.


images/download/attachments/119252724/285-version-1-modificationdate-1673843991808-api-v2.png


Ist der Parameter Write top level nodes as objects auf true gesetzt, wird folgende Datei erzeugt.


demo1.json
{"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.


demo2.json
{
"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)

images/download/attachments/119252724/286-version-1-modificationdate-1673843991804-api-v2.png

images/download/thumbnails/119252724/image2017-5-2_20_35_22-version-1-modificationdate-1673843991827-api-v2.png

images/download/thumbnails/119252724/image2017-5-2_20_41_36-version-1-modificationdate-1673843991894-api-v2.png


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)

images/download/attachments/119252724/288-version-1-modificationdate-1673843991800-api-v2.png

-->

images/download/attachments/119252724/289-version-1-modificationdate-1673843991798-api-v2.png

Error: transparent node 'TransparentNode_Error' may not have more than one iteration

images/download/attachments/119252724/image2017-5-2_20_45_0-version-1-modificationdate-1673843991890-api-v2.png


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)

images/download/attachments/119252724/290-version-1-modificationdate-1673843991788-api-v2.png

images/download/thumbnails/119252724/image2017-5-2_20_54_28-version-1-modificationdate-1673843991906-api-v2.png

images/download/thumbnails/119252724/image2017-5-2_20_55_3-version-1-modificationdate-1673843991908-api-v2.png

Arrays


Ein Array kann über gleichnamige Einzelfelder erzeugt werden. Bei Feldnamen wird alles ab # ignoriert. Somit wird ArrayValue#1-3 zu ArrayValue.


Zielstruktur

Ergebnis

images/download/attachments/119252724/147-version-1-modificationdate-1673843991819-api-v2.png

images/download/thumbnails/119252724/image2017-5-3_13_0_33-version-1-modificationdate-1673843991926-api-v2.png



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

images/download/attachments/119252724/145-version-1-modificationdate-1673843991825-api-v2.png

images/download/thumbnails/119252724/image2017-5-3_12_53_42-version-1-modificationdate-1673843991896-api-v2.png