Skip to main content

xSuite Interface Windows Prism 5.x – Online-Hilfe

Ausgabeformat "Json"

Dieses Ausgabeformat generiert aus den Indexdaten des Dokumentes eine JSON-Datei. Die Dateianlagen des Dokumentes können eingebettet werden oder Referenzen auf extern mitzuführende Dateianlagen können generiert werden.

Hinweis

Die Eigenschaften für die Ausgabewerte, die in der JSON-Datei zu erstellen sind, müssen hier in einer proprietären Syntax definiert werden (siehe JSONPath-Syntax). Diese Syntax ist an die JSONPath-Syntax (siehe JSON-Indexdatenleser) angelehnt und wird deshalb nachfolgend auch so genannt. Funktional ist diese Syntax aber auf die hier vorliegenden Belange der JSON-Ausgabeformaterstellung reduziert, während JSONPath eigentlich eine Syntax zum Einlesen bestehender JSON-Daten darstellt.

Eigenschaft

Beschreibung

OutputFormat[].AttachFileMode

Modus, wie zusätzliche Dateianlagen zu der JSON-Datei hinzugefügt werden:

  • None: keine Anlagen (Standardwert)

  • Reference: als Dateiverweis in der JSON-Datei

  • Embedded: als Base64-kodierte Binärdaten eingebettet in die JSON-Datei

Die physische Bereitstellung der Dateien im Dateisystem, die im Modus Reference referenziert werden, ist nicht Bestandteil dieser Ausgabeformaterstellung. Die Bereitstellung muss auf anderem Wege realisiert werden, z. B. über ein dateibasiertes Ausgabesystem wie "File" (siehe auch vergleichbares Beispiel beim Ausgabeformat "InternalJson").

OutputFormat[].ItemProperty[](*)

Teilparameter zur Definition einer JSON-Eigenschaft zur Aufnahme tabellarischer Daten

Wenn Positionsdaten oder andere Tabellendaten ausgegeben werden, ist diese Eigenschaft zwingend zu konfigurieren. Die Eigenschaft muss ein JSON-Element vom Typ "Array" darstellen.

  1. ItemProp*: betreffende Eigenschaft in JSONPath-Syntax

  2. FieldName: optionaler Tabellenname der Quellfelder im Feldkatalog

Die Eigenschaft .ItemProperty[] kann mehrfach mit unterschiedlichen FieldName-Parametern definiert werden, wenn mehrere JSON-Elemente mit Tabellendaten vorhanden sind, denen Werte aus verschiedenen Quelltabellen zugeordnet werden. Bei Weglassung des Parameters gilt der Eintrag global für alle Tabellen.

Der Pfad auf die zu generierende Zieleigenschaft ist in den Feldzuordnungen unter .OutputName anzugeben. Dieser Pfad muss bei tabellarischen Daten relativ zu der im Parameter ItemProp festgelegten Eigenschaft definiert werden. Für jede Tabellenzeile wird implizit ein Unterobjekt als Array-Element generiert. In diesem wird wiederum der im .OutputName angegebene Pfad angelegt. Wenn der .OutputName leer ist, wird der Ausgabewert direkt als elementarer Wert in das Ziel-Array geschrieben. Dies ist jedoch nur für Tabellendaten anwendbar, die nur eine Spalte umfassen.

OutputFormat[].AttachFileProperty(*)

Definition einer JSON-Eigenschaft in JSONPath-Syntax, unter der die Referenz auf Dateianlagen oder die Binärdaten von Dateianlagen ausgegeben werden

Diese Definition wird in den Modi Reference und Embedded benötigt.

  1. File*: vollständiger Pfad auf die (übergeordnete) Eigenschaft für die Ausgabe der Referenz/Binärdaten

  2. Data: optionaler relativer Pfad für die Referenz/Binärdaten

  3. Name: optionaler Pfad für die zusätzliche Ausgabe des Dateinamens

  4. Type: optionaler Pfad für die zusätzliche Ausgabe des MIME-Typs

Zur Ausgabe mehrerer Dateianlagen muss der Pfad, der im Parameter File definiert ist, ein JSON-Element vom Typ "Array" darstellen. In den Parametern Data, Name und Type sind nur relative Pfade dazu anzugeben. Für jede Anlage wird dann implizit ein Unterobjekt als Array-Element generiert und in diesem wiederum der in Data, Name und Type angegebene Pfad angelegt. Wenn Data leer ist, wird der Ausgabewert direkt als elementarer Wert in das Ziel-Array geschrieben. Name und Type werden ignoriert.

Zur Ausgabe einer einzelnen Dateianlage kann in File eine elementare Eigenschaft statt eines Arrays definiert werden. Diese dient dann direkt als Zieleigenschaft für die Referenz oder Binärdaten, sodass der Parameter Data keine Relevanz hat. Wenn auch Name und Type ausgegeben werden, müssen diese in diesem Fall absolute Pfadangaben enthalten.

OutputFormat[].AttachFileRefMacro

optionaler Makroausdruck zur Aufbereitung des Dateireferenz-Wertes im Modus Reference

Der Standardwert ist mit dem Ausdruck "%FileName%" vorbelegt, d.h. nur der reine Dateiname wird ausgegeben.

JSONPath-Syntax

Bei den Eigenschaften dieses Ausgabeformats kommt eine eingeschränkte Variante der JSONPath-Syntax zum Einsatz. Diese Syntax besteht aus einer Pfadangabe, die sich aus den per Punkt getrennten Eigenschaftsnamen geschachtelter Objekte zusammensetzt. Die unterste Eigenschaft im Pfad nimmt den elementaren Zielwert auf. Die übergeordnete Eigenschaften stellen standardmäßig jeweils ein Objekt dar.

Wenn eine Eigenschaft ein Array darstellen soll, muss dieses durch eckige Klammern hinter dem Eigenschaftsnamen kenntlich gemacht werden. Das ist beispielsweise für die obigen Konfigurationseigenschaften .ItemProperty[] und .AttachFileProperty der Fall, d.h. für Tabellenzeilen und Dateianlagen.

Andere Werte können bei Bedarf auch in ein Array ausgegeben werden. Dann kann zusätzlich das betreffende Array-Element spezifiziert werden. Ein numerischer Wert in den eckigen Klammern gibt eine konkrete Elementnummer vor. Die Zählung beginnt hierbei bei 1. Ein Suchschlüssel {Name}={Wert} definiert eine Suche nach einem Array-Element vom Typ "Objekt", das eine Eigenschaft mit dem angegebenen Namen und Wert enthält. Array-Elemente, die noch nicht vorhanden sind, werden automatisch neu angelegt, wobei ggf. auch die Eigenschaft für den Suchschlüssel gesetzt wird. Als dessen Wert wird nur der Typ "String" unterstützt. Wenn weder Elementnummer noch Suchschlüssel vorgegeben ist, wird immer das erste Array-Element referenziert und nur dann neu angelegt, wenn das Array noch leer ist.

Die folgenden Beispiele zeigen für verschiedene JSONPath-Ausdrücke, welche JSON-Elemente daraus resultieren:

Proprietärer JSONPath-Ausdruck

Generiertes JSON-Fragment

Doc.InvoiceNumber

Doc.InvoiceDate

{
   "Doc": {
      "InvoiceNumber": …,
      "InvoiceDate": …
   }
}

Fields[1]

Fields[2]

{
   "Fields": [
      …,
      …
   ]
}

Fields[1].Value

Fields[2].Value

{
   "Fields": [
      {
         "Value": …
      },{
         "Value": …
      }
   ]
}

Fields[Name=InvoiceNumber].Value

Fields[Name=InvoiceDate].Value

{
   "Fields": [
      {
         "Name": "InvoiceNumber",
         "Value": …
      },{
         "Name": "InvoiceDate",
         "Value": …
      }
   ]
}

Der folgende Auszug verdeutlicht die Nutzung der JSONPath-Syntax im Kontext einer konkreten Ausgabeformat-Konfiguration:

{
   "OutputFormat": [
      {
         "ItemProperty": [
            "ItemProp: Document.Items[]"
         ],
         "AttachFileProperty": "File: Document.Files[], Data: Reference, Name: Name"
         "Field": [
            {
               "Name": "Field1",
               "OutputName": "Document.Fields[Name=Field1].Value"
            },{
               "Name": "Items.Field1",
               "OutputName": "Fields[Name=ItemsField1].Value"
            }
         ]
      }
   ]
}

Aus dieser Konfiguration werden die folgenden JSON-Daten generiert:

{
   "Document": {
      "Fields": [
         {
            "Name": "Field1",
            "Value": …
         }
      ],
      "Items": [
         {
            "Fields": [
               {
                  "Name": "ItemsField1",
                  "Value": …
               }
            ]
         }
      ],
      "Files": [
         {
            "Reference": "…",
            "Name": "…"
         }
      ]
   }
}