Probleme mit addColumns bei inkonsistentem JSON aus externer API (verschobene Spalten bei fehlenden Feldern)

Hallo zusammen,

Wir arbeiten aktuell an einem Flow, der Daten über eine externe API bezieht. Die API liefert pro Produkt ein JSON, in dem jeweils ein articles-Array enthalten ist. Leider haben wir das Problem, dass das JSON inkonsistent aufgebaut ist. Wenn bei einzelnen Artikeln bestimmte Felder fehlen (z. B. die description), dann werden die nachfolgenden Felder in die falschen Spalten eingetragen.
Hier ist ein Beispiel, wie der JSON-Teil in etwa aussieht (es kommen noch Infos dazu):

{
„product_number“: 123,
„articles“: [
{
„id“: „1234“,
„pharmacode“: 5555,
„description“: {
„longDescription“: „Tablette 123“,
„sort“: „566“
},
„saleRestriction“: „123“
},
{
„id“: „12345“,
„pharmacode“: 55554,
„saleRestriction“: „1234“
}
]
}

Wir verwenden den JSONReader-Step, um den JSON-Output aus dem vorherigen SpreadsheetURLDownload-Step manuell zu parsen. Um die Artikeldaten in Spalten zu bringen, gehen wir explizit über das articles-Array mit folgendem Aufruf:

${addColumns(row, product[‚articles‘], „hci_article_“, { „delimiter“: „|||“ })}

Das Problem ist, dass wenn bei einem Artikel ein Feld leer ist oder komplett fehlt, die Zuordnung der Spalten durcheinander gerät.

Wir haben auch versucht, mit skipEmptyValues und autoExpand zu arbeiten:

<#–${addColumns(row, product[‚articles‘], „hci_article_“, { „delimiter“: „|||“, „skipEmptyValues“:true, „autoExpand“:„asColumns“ })}–>

Leider hat das das Problem nicht gelöst.

Hat jemand eine Idee, wie man dieses Problem sauber lösen kann? Ziel ist es, dass fehlende Felder beim Mapping einfach leer bleiben, ohne dass nachfolgende Daten in die falschen Spalten rutschen.

Danke schon mal für jeden Hinweis! :slight_smile:

Dee

Hallo @EG-Interfaces-Dee,

ihr versucht im Moment alle Daten zu den Artikeln eines Produktes direkt in eine Zeile zu schreiben, richtig? Habe selber die „delimiter“-Option noch nie genutzt.

Mein Ansatz wäre, die Daten pro Artikel erstmal in eine eigene Zeile zu schreiben und falls nötig anschließend zu gruppieren.

Gruß
Gustav