ExtendedJsonCreationUnit

Gruppe

Integration Units

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 &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.

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.


images/download/attachments/73598357/285-version-1-modificationdate-1646896834670-api-v2.png


Der Knoten der obersten Ebene wird immer als Objekt dargestellt (in der JsonCreationUnit kann dieses Verhalten konfiguriert werden).


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"
}
}

Transparente Knoten

Blau markierte Knoten haben die Zielstruktur-Knoten-Eigenschaft XML/JSON Behandlung=Transparent.


Zielbaum

Ergebnis

images/download/attachments/73598357/286-version-2-modificationdate-1646898393686-api-v2.png

images/download/thumbnails/73598357/image2017-5-2_20_35_22-version-1-modificationdate-1619150367848-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

images/download/attachments/73598357/288-version-1-modificationdate-1646899314088-api-v2.png

-->

images/download/attachments/73598357/289-version-1-modificationdate-1646899331115-api-v2.png

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

images/download/attachments/73598357/290-version-1-modificationdate-1646900283329-api-v2.png

images/download/thumbnails/73598357/image2017-5-2_20_54_28-version-1-modificationdate-1619150367835-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/73598357/146-version-1-modificationdate-1646036932881-api-v2.png

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



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

images/download/attachments/73598357/144-version-1-modificationdate-1646027529248-api-v2.png

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


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

images/download/attachments/73598357/142-version-1-modificationdate-1646027249578-api-v2.png

images/download/thumbnails/73598357/top_1-version-1-modificationdate-1619150367802-api-v2.png


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

images/download/attachments/73598357/143-version-1-modificationdate-1646027261885-api-v2.png

images/download/thumbnails/73598357/top_2-version-1-modificationdate-1619150367801-api-v2.png

Hinweis: Mit den letzten beiden Methoden können Sie auch verschachtelte Arrays erzeugen, was mit den ersten beiden Methoden nicht möglich ist.