Wiederholbare Elemente im JSON-Filter definieren

Wenn ein JSON-Element mehrmals in Ihren JSON-Daten vorkommt, handelt es sich um ein wiederholbares Element. Für gewöhnlich enthalten wiederholbare Elemente Daten für ein einzelnes Etikett. Wiederholbare Elemente erzeugen mehrere Etiketten, die mit relevanten Daten ausgefüllt werden.
So geben Sie an, dass Sie Daten aus allen wiederholbaren Elementen extrahieren wollen, nicht nur aus dem ersten:
-
Wählen Sie das Element aus und definieren Sie es als Datenblock.
-
Aktivieren Sie die Option Wiederholbares Element.
Beinhaltet der Filter die Definition von Elementen, die als Datenblock / wiederholbare Elemente definiert sind, zeigt die Aktion Datenfilter verwenden wiederholbare Elemente mit eingebetteten Platzhaltern an. Alle Aktionen, die unter einem solchen Platzhalter eingebunden sind, werden nur für Datenblöcke auf dieser Ebene ausgeführt.
Beispiel
Das „item“ -Element ist sowohl als – Datenblock als auch als Wiederholbares Element definiert. Dadurch erhält der Filter die Anweisung, alle Instanzen des Datenfelds zu extrahieren, nicht nur die erste. In diesem Fall sollte „item“ als Unterebene in der Aktion Datenfilter verwenden definiert werden. Sie müssen die Aktionen „Etikett öffnen“ und „Etikett drucken“ unter diesem Unterebenen-Platzhalter einbetten, damit sie für jede Instanz des „item“-Elements wiederholt werden. Im folgenden Beispiel geschieht dies für drei Instanzen.
{ "NICELABEL_JOB": { "TIMESTAMP": "20130221100527.788134", „BENUTZER“: "PGRI", "IT_LABEL_DATA": { "item": [ { "LBL_NAME": "goods_receipt.nlbl", "LBL_PRINTER": "Production01", "LBL_QUANTITY": "1", "MAKTX": "MASSE EINS", "MATNR": "28345", "MEINS": "KG", "WDATU": "19.01.2012", "QUANTITY": "1", "EXIDV": "012345678901234560" }, { "LBL_NAME": "goods_receipt.nlbl", "LBL_PRINTER": "Production01", "LBL_QUANTITY": "1", "MAKTX": "MASS TWO", "MATNR": "28346", "MEINS": "KG", "WDATU": "11.01.2011", "QUANTITY": "1", "EXIDV": "012345678901234577" }, { "LBL_NAME": "goods_receipt.nlbl", "LBL_PRINTER": "Production01", "LBL_QUANTITY": "1", "MAKTX": "MASSE DREI", "MATNR": "27844", "MEINS": "KG", "WDATU": "07.03.2009", "QUANTITY": "1", "EXIDV": "012345678901234584" } ] } } }
Warnung:
JSON-Datenfilter mit verschachtelten Datenblöcken duplizieren Werte aus dem vorherigen Zuweisungsbereich, wenn eine Variable im ersten Block, aber nicht im zweiten definiert ist. Nehmen wir an, Sie drucken zwei Etiketten. Im ersten Zuweisungsbereich haben Sie eine Variable definiert: „manufacturer_serial“. Im zweiten Zuweisungsbereich ist diese Variable nicht vorhanden.
{ "jobs": [ { "data": [ { "manufacturer_serial": "706583012001", "package_code": "AA792CY" } ], "label_filename": "serial_number_label.nlbl", "print_quantity": 1, "printer_name": "Warehouse_printer_09" }, { "data": [ { "package_code": "BE273XS" } ], "label_filename": "serial_number_label.nlbl", "print_quantity": 1, "printer_name": "Warehouse_09" } ] }
Das erwartete Ergebnis wäre das zweite Etikett ohne „manufacturer_serial“ -Daten. Beim tatsächlichen Druck würde das zweite Etikett jedoch den Wert „manufacturer_serial“ des ersten Etiketts enthalten, d. h. 706583012001.
Es gibt jetzt drei Möglichkeiten:
-
Vermeiden Sie verschachtelte Datenblöcke.
-
Definieren Sie die Variablenwerte als leere Werte („“), wenn die Variablen nicht in verschachtelten Datenblöcken verwendet werden.
"data": [ { "manufacturer_serial": "", "package_code": "AA792CY" }
-
Verwenden Sie Bedingungen für Aktionen, um Variablen zu definieren.
-
Verwenden Sie Zeichenfolgenmanipulationen, wenn fehlende Variablen erkannt werden.