JSON reader transformation template

Hi zuammen,

ich habe Probleme mit dem JSON parsing, ich kann das Handbuch leider nicht anwenden auf meinen Fall.
Aus dem JSON unten möchte ich die „courier_package_nr“ komma separiert in eine Spalte schreiben.
Kann mir jemand helfen?

JSON
{
„status“: „SUCCESS“,
„packages“: [
{
„courier_other_name“: „“,
„courier_package_nr“: „XXX“,
„tracking_status_date“: „1721324640“,
„tracking_delivery_days“: „0“,
„tracking_status“: „11“,
„package_type“: „0“,
„package_id“: „XXX“,
„courier_inner_number“: „XXX“,
„courier_code“: „gls“,
„tracking_url“: „XXX“,
„is_return“: false
},
{
„courier_other_name“: „“,
„courier_package_nr“: „XXX“,
„tracking_status_date“: „1721253600“,
„tracking_delivery_days“: „0“,
„tracking_status“: „1“,
„package_type“: „0“,
„package_id“: „XXX“,
„courier_inner_number“: „XXX“,
„courier_code“: „gls“,
„tracking_url“: „XXX“,
„is_return“: false
}
]
}

Hallo @philippm,

versuch es gerne mal hiermit:

<#assign row = target.addRow()>
<#list json as j >
  <#assign row = target.addRow()>
   ${addColumns(row, j["packages"], "", {"columns":["courier_package_nr"],"mode":"include"})}
</#list>

Damit sollte ein Spreadsheet mit einer Spalte „courier_package_nr“ ausgegeben werden, in der die Nummern kommasepariert aufgeführt sind.

INFO:
Ich habe mir einmal erlaubt aus deinem Beitrag ein paar Nummern zu „schwärzen“.

Viele Grüße,
Benjamin

Danke für Deine Antwort.
Leider bleibt der Output leer.

Hallo Philipp,

ich nehme an du möchtest pro API Call eine Zeile haben in der dann alle courier_package_nr Kommasepariert gelistet sind?

Normalerweise wäre das ein Fall für die Gruppier Funktion sein, ich sehe aber leider keinen Eindeutigen Identifier, nach dem du Gruppieren könntest.

Versuch es mal hiermit:

<#assign row = target.addRow()>
<#assign test=  json["packages"]?map( x -> x.courier_package_nr)>
<#assign row = target.addRow()>
${row.addCol("courier_package_nr",test?join(","))}

Hallo @philippm,

die Antwort von @sHelme sollte genauso funktionieren :+1:

Ich kann sehe leider mit den gegebenen Mitteln keinen Fehler. Das einzige was auffällt ist das deine erste Zeile keine Packages beinhaltet.

Könntest du - falls du das Problem nicht schon gelöst hast - es ggf. mal mit einem einzigen Abruf (in dem auch Daten vorhanden sind) probieren?

Grund: Es könnte sich hier ggf. „einfach“ um ein Vorschauproblem handeln, da idR immer nur die erste Zeile verarbeitet wird (und diese ist in deinem Beispiel leer).

Alternativ kannst du dir natürlich auch mal mit einem CSVWriter o.ä. mal eine Mail schicken lassen (also den Flow richtig ausführen) und überprüfen ob was in der Datei steht.

Viele Grüße,
Benjamin

Das Template von @sHelme hat funktioniert, danke! Auch an Dich @synesty-Benjamin !
Wie kann ich dem Output des JSON Readers noch eine Spalte mit source_orders_order_id
hinzufügen

Hallo @philippm,

die Source Spalte kannst du z. B. folgendermaßen hinzufügen:

${row.addCol("orders_order_id",inputRow.get('source_orders_order_id'))}

Viele Grüße
Felix

1 „Gefällt mir“