Indexdatenleser "Json"
Der Indexdatenleser "Json" ist ein generischer Indexdatenleser für JSON-Dateien mit weitgehend beliebigem Aufbau.
Eigenschaft | Beschreibung |
|---|---|
ProcessReadIndex[].ItemProperty[] | Teilparameter zur Definition einer Eigenschaft im JSON-Objekt, die Unterobjekte enthält, die jeweils eine Zeile tabellarischer Daten darstellen:
Die Eigenschaft Der Pfad auf die Quelleigenschaft, der in den Feldzuordnungen unter |
ProcessReadIndex[].ConvertUtcDate | Umrechnungsart von Datumsangaben und Zeitangaben in die lokale Zeit Datums-/Zeitangaben werden im JSON-Format als String-Werte übergeben. In der Regel kommt eine Syntax in koordinierter Weltzeit (UTC) zum Einsatz. Diese Konfigurationseigenschaft legt fest, ob und wie solche Werte in die lokale Zeit umgerechnet werden:
|
Für die Definition des Pfades auf eine einzulesende JSON-Eigenschaft in der Eigenschaft .InputName wird eine Variante der JSONPath-Syntax genutzt. Diese Variante ist an die XPath-Syntax angelehnt ist, die im Kontext von XML-Dateien genutzt wird (siehe Indexdatenleser "Xml").
Folgend wird anhand einiger Beispiele auf die Grundlagen dieser JSONPath-Syntax eingegangen. Hierbei wird nur auf die JSONPath-Punkt-Notation eingegangen, bei der Eigenschaftsnamen durch Punkte voneinander getrennt werden.
Hinweis
Eine detaillierte Beschreibung der JSONPath-Syntax finden Sie beim Urheber dieser Syntax unter http://goessner.net/articles/JsonPath. Testsuiten sind online z. B. unter dem Suchbegriff "JSONPath Tester" verfügbar.
Um den Wert einer bestimmten Eigenschaft auszulesen, muss der Schlüsselname dieser Eigenschaft angegeben werden. Bei verschachtelten Objekten muss der Pfad von dem Wurzelobjekt bis hin zur gesuchten Eigenschaft angegeben werden. Das Wurzelobjekt trägt den Pseudonamen $ und das aktuelle Element hat (primär zur Verwendung in einem Filter) den Namen @. Array-Elemente können entweder über ihre Indexnummer adressiert oder über einen Filterausdruck ?(...) selektiert werden. Die Zählung der Indexnummern beginnt bei 0. Durch die Angabe * werden alle Array-Elemente ausgewählt, um z. B. multiple Werte für tabellarische Zielfelder auszulesen – wenn nicht über die obige Eigenschaft .ItemProperty[] bereits eine explizite Trennung in Unterobjekte pro Zeile erfolgt.
In den folgenden Beispielen soll das Kopfdatenfeld mit der "InvoiceNo" und das Positionsdatenfeld mit der "ItemNo" gelesen werden.
Hinweis
In der Praxis sollte für "ItemNo" bevorzugt $.Document.Items als .ItemProperty[]-Konfigurationseigenschaft definiert und das Quellfeld dann über ItemNo adressiert werden.
Hinweis
Die Verwendung des Wurzelobjekts $ ist optional. In den folgenden Beispielen ist das Wurzelobjekt der Vollständigkeit halber immer mit angegeben.
JSON-Fragment | JSONPath-Ausdruck |
|---|---|
{
"Document": {
"Fields": {
"InvoiceNo": "123456"
}
}
} |
|
{
"Document": {
"Fields": [{
"Name": "InvoiceNo",
"Value": "123456"
}
]
}
} | erstes Array-Element:
bestimmtes Array-Element über Namensfilter:
|
{
"Document": {
"Items": [{
"ItemNo": 1
},{
"ItemNo": 2
}
]
}
} | alle Array-Elemente:
|
Das JSON-Format unterstützt typisierte Werte. Das Programm übernimmt die typisierten Werte, sodass die Definition eines Datentyps unter ProcessReadIndex[].Field[].InputFormat zum Parsen der Eingabewerte in der Regel nicht erforderlich ist. Eine Ausnahme kann der Datumstyp sein, für den das JSON-Format String-Werte verwendet. Gängige Syntaxen, z. B. das ISO-Format, werden vom JSON-Parser dennoch implizit erkannt. Bei anderen Syntaxen muss für Datumswerte explizit die Eigenschaft .InputFormat konfiguriert werden.