JSON file von FTP Download API request body

Hallo zusammen,
ich lese eine JSON Datei vom FTP Server ein, die ich im nächsten Schritt als API Request Body nutzen möchte.
Ich habe es so versucht, aber leider funktioniert es nicht.

Die JSON Datei, die ich einlese sieht so aus:

Wenn ich genau diesen Inhalt in den Request Body Copy => Paste funktionier der API Call

Ich möchte den Body, aber variabel machen über die JSON Datei, die ich per FTP zuvor einlese.
Könnt Ihr mir hierbei helfen?

Danke!

Hallo @edvsource-werbeartik,

über die Funktion getName() kriegst du nicht den Inhalt der Datei, sondern nur den Dateinamen. Versuch es mal mit dem File2Spreadsheet-Step, das Ergebnis des Steps ist ein Spreadsheet mit zwei Spalten, Dateinamen und Dateiinhalt. Als Input für den Step wählst du dein FTPSingleFileDownload.

Anschließend kannst du mit ${output@Filelist2Spreadheet_2.firstRow('content')} auf den Inhalt der ersten Datei zugreifen. Nicht vergessen, den Namen der Variable anzupassen.

Gruß Gustav

Hey! Cool das klappt! Besten Dank!

Jetzt hänge ich aber noch daran, dass meine JSON Datei ein Array enthält mit mehreren Datensätzen.
Es müsste also so sein, dass dieses gesplittet wird und pro Datensatz der restliche Synesty flow durchläuft.

Ich bräuchte also eine Schleife, die dann pro Datensatz alle Folgesteps ausführt.

Meine JSON Datei sieht wie folgt aus (im Beispiel 2 Datensätze):

Meine APIS nehmen im Body aber immer nur einen Datensatz an. Der Body muss also so aussehen
image

Hoffe ihr könnt mir helfen, wie ich das hinbekomme, dass hier eine Schleife durchläuft!
Besten Dank!

Die üblichen for-Schleifen lassen sich mit Synesty leider nur über Umwege abbilden.
Du kannst in einem Flow nicht erst die APICalls 1-4 für Datensatz A abschicken und im Anschluss alle 4 Anfragen für Datensatz B. Zumindest nicht ohne die ganzen APICall-Steps pro Datensatz zu wiederholen.

Du kannst aber APICall 1 für alle Datensätze abschicken, anschließend APICall 2 für alle Datensätze usw…

Dafür musste du alle 4 APICalls überarbeiten, dass sie nicht mehr nur eine Anfrage abschicken, sondern eine Liste an Anfragen abarbeiten.

Hier ein Beispiel, wie das Skript im requestBody dafür aussehen muss. Mittels der Callcounter-Variable nimmst du pro Call immer nur die Daten aus einer Zeile des Input-Spreadsheets.

Skript requestBody

<#list output@Excel2Spreadsheet_1.getRows() as row>
<#if row.getRowNumber() == callcounter+1>
<#list row.getCols() as col>${col.title!}:${col.get()!}
</#list></#if>
</#list>

Im parsingTemplate muss du mittels der nextUrl-Funktion den APICall so oft wiederholen, wie es noch unverarbeitete Datenzeilen gibt. Dafür ergänzt du folgendes in deinem parsingTemplate.

Ergänzung parsingTemplate

<#list output@Excel2Spreadsheet_1.getRows() as row>
<#if row.getRowNumber() gt callcounter+1>
${nextUrl(„HOST_URL HERE“)}
</#if></#list>

Der anfangs erwähnte Umweg hat zwar auch seine Beschränkung, kommt aber sehr nah an die Schleifen dran, wie man sie sich vorstellt. Ich hatte dazu schonmal ein Beispiel in einem anderen Forumpost geliefert. Leider ist da aber der angehangen Beispiel-Flow durch die Forum-Migration verloren gegangen. Ich werde das demnächst nochmal in #Sharing posten.