Wie kann ich eine XML oder JSON Datei aus einem Spreadsheet erzeugen?

Ziel dieses Cookbooks ist aus einem Spreadsheet (z.B. aus einer CSV-Datei) eine JSON- oder XML-Datei zu erzeugen.

Ausgangsdaten

Die Datenquelle ist eine CSV-Datei mit Artikeldaten (Beispielartikel).

Ziel:

Daraus wollen wir z.B. JSON oder XML Daten erzeugen wie diese:

{
  "products" : [
  {  
    "identifier" : "1",
    "brandname": "K-Star", 
   "name": "Super Shoe XI"
  },
  {  
    "identifier" : "2",
    "brandname": "3-Stripes", 
   "name": "Vintage"
  }
  ]
}

Umsetzung

Dazu bauen wir uns folgenden Flow:

  1. CSV-Datei herunterladen

  2. CSV-Datei einlesen (parsen)

  3. JSON erzeugen

4… XML erzeugen.

Das Endergebnis sieht ungefähr so aus:

Der Weg zum Ziel

Um dahin zu kommen geht man wie folgt vor:

Der TextHTMLWriter ist der Step, mit dem das JSON erzeugt wird und zwar aus den Daten des SpreadsheetCSVReaders, der die CSV-Datei einliest.

Zuerst führt man die Step-Vorschau des SpreadsheetCSVReaders aus, um zu prüfen, ob die CSV-Datei richtig eingelesen wurde (man muss tabellarische Daten sehen)

Dann wechselt man zum TextHTMLWriter und klickt auf das ±Symbol.

Und fügt die Ausgabe-Variable spreadsheet des SpreadsheetCSVReaders vom Typ Freemarker-Skript ein.

Dadurch wird ein Beispiel-Skript eingefügt, welches alle Spalten des Spreadsheets darstellt.

Man ist jetzt schon fast am Ziel.

Jetzt muss dieses Beispiel-Skript nur noch so angepasst werden, dass die Ausgabe dem JSON-Format entspricht, welches man benötigt.

Ergebnis

Das fertige Skript könnte z.B. so aussehen.

{
  "products" : [
<#list spreadsheet@SpreadsheetCSVReader_3.getRows() as row> 
  {  
    "identifier" : "${row.get("identifier")!}",
    "brandname": "${row.get("brandname")!}", 
   "name": "${row.get("name")!}"
  }
  <#sep>,</#sep>
</#list>
  ]
}

Die Step-Vorschau des TextHTMLWriter Steps, sieht dann z.B. so aus.

Zur Kontrolle könnte man diese JSON-Ausgabe noch in einen JSON-Validator (z.B. hier) einfügen, um zu prüfen, ob die Ausgabe das JSON auch valide ist.

Analog dazu kann man auch ganz einfach eine XML Datei erstellen.

Fazit

Mit diesem Beispiel kann man nahezu jede beliebige Integration umsetzen, bei der JSON oder XML erzeugt werden muss.

Fertige Vorlage

Das obige Beispiel gibt es auch als fertige Vorlage, die sie sich in Ihren Synesty Account (auch Test-Account) installieren können.

Zur Vorlage

Weiterführende Links