Konvertieren Sie JSON in CSV in Golang mit Beispiel

Blog

Konvertieren Sie JSON in CSV in Golang mit Beispiel

Golang csv.NewWriter () ist eine eingebaute Funktion, die die Datenstruktur in csv Format. CSV (Comma Separated Value) ist eine hoch akzeptierte Datensprache, die häufig von Excel und Tabellenkalkulationen verwendet wird und als solche sehr nützlich ist, wenn Ihr Skript Daten erzeugt und Sie diese in einem Standardformat haben möchten.

Das CSV-Paket hat ein NeuerWriter() Funktion, die das Writer-Objekt zurückgibt, das zum Schreiben der CSV-Daten verwendet wird. Der csv.Writer() schreibt csv-Records, die durch den Zeilenumbruch abgeschlossen werden und verwendet das Komma als Feldtrennzeichen.

Sehen Sie sich die folgenden Code-Snippets nacheinander an.

Lassen Sie uns eine Json-Datei erstellen. Wir werden es benennen unternehmen.json.

[ { 'App': 'Instagram', 'Company': 'Facebook', 'Category': 'Social Media' }, { 'App': 'WeChat', 'Company': 'Tencent', 'Category': 'Social Media' }, { 'App': 'Hotstar', 'Company': 'Disney', 'Category': 'Entertainment' }, { 'App': 'CNBC', 'Company': 'Comcast', 'Category': 'News' }, { 'App': 'SnapChat', 'Company': 'Snap', 'Category': 'Social Media' } ]

Unser JSON-Objekt hat also drei Eigenschaften.

  1. App
  2. Gesellschaft
  3. Kategorie

Schreiben wir nun die **hello.go **-Datei.

tcm..com/activate

Zuerst müssen wir die folgenden go-Pakete importieren.

package main import ( 'encoding/csv' 'encoding/json' 'fmt' 'io/ioutil' 'os' )

Paket csv liest und schreibt die Dateien mit kommagetrennten Werten (CSV).

Es gibt viele Arten von CSV-Dateien und dieses Paket unterstützt das in RFC 4180 beschriebene Format.

Paket json implementiert die Kodierung und Dekodierung von JSON wie in RFC 7159 definiert. Die Zuordnung zwischen den JSON und Go-Werte werden in den Dokumenten für die Funktionen Marshal und Unmarshal beschrieben.

Paket fmt implementiert formatierte E/A mit Funktionen analog zu Cs printf und scanf. Das Format ' Verben ‘ sind von C abgeleitet, aber einfacher.

Paket io / ioutil implementiert einige I/O-Dienstprogrammfunktionen.

Verpacken Sie die stellt die plattformunabhängige Schnittstelle zur Betriebssystemfunktionalität bereit. Das Design ist Unix-like, obwohl die Fehlerbehandlung Go-like ist; fehlgeschlagene Aufrufe geben Werte vom Typ error zurück statt Fehlernummern.

Wie kaufe ich Shiba-Münzen in New York?

Der nächste Schritt besteht nun darin, die strukturieren .

// Application struct type Application struct { App string Company string Category string }

Golang Structs sind der benutzerdefinierte Typ, der die Sammlung benannter Felder/Eigenschaften enthält. Es wird verwendet, um zusammengehörige Daten zu einer einzigen Einheit zu gruppieren.

Definiere nun die Hauptfunktion.

Der erste Schritt ist zu Datei lesen Verwenden der **ioutil.ReadFile() **Funktion.

jsonDataFromFile, err := ioutil.ReadFile('./company.json') if err != nil { fmt.Println(err) }

Wir haben bereits eine **json **-Datei definiert – die ioutil.ReadFile() Die Funktion liest die mit Dateiname benannte Datei und gibt den Inhalt zurück.

Demarshalieren Sie nun den Inhalt der JSON-Datei.

formik vs reagieren Hakenform
var jsonData []Application err = json.Unmarshal([]byte(jsonDataFromFile), &jsonData) if err != nil { fmt.Println(err) }

Erstellen Sie nun eine CSV-Datei in Golang mit ** os.Erstellen () **Funktion.

csvFile, err := os.Create('./data.csv') if err != nil { fmt.Println(err) } defer csvFile.Close()

Sehen Sie sich nun den folgenden Code an.

writer := csv.NewWriter(csvFile) for _, usance := range jsonData { var row []string row = append(row, usance.App) row = append(row, usance.Company) row = append(row, usance.Category) writer.Write(row) } // remember to flush! writer.Flush()

Im obigen Code-Snippet erstellen wir das Writer-Objekt und fügen dann einen JSON-Inhalt nach dem anderen an diese CSV-Datei an. Dieser Json-Inhalt wird also in eine CSV-Datei konvertiert.

Eine zweidimensionale Slice-Zeile enthält Beispiel-CSV-Datensätze. Die Funktion Go os.Create() erstellt die CSV-Datei data.csv; alle Datensätze abschneiden, falls bereits vorhanden, und die Instanz von zurückgeben os.Datei () Objekt.

Die csvwriter.Write(Zeile) Die Funktion wird aufgerufen, um jeden Abschnitt der Strings in eine Datei zu schreiben als CSV Aufzeichnungen.

Unser gesamter endgültiger Code ist der folgende.

// hello.go package main import ( 'encoding/csv' 'encoding/json' 'fmt' 'io/ioutil' 'os' ) // Application struct type Application struct { App string Company string Category string } func main() { // read data from file jsonDataFromFile, err := ioutil.ReadFile('./company.json') if err != nil { fmt.Println(err) } // Unmarshal JSON data var jsonData []Application err = json.Unmarshal([]byte(jsonDataFromFile), &jsonData) if err != nil { fmt.Println(err) } csvFile, err := os.Create('./data.csv') if err != nil { fmt.Println(err) } defer csvFile.Close() writer := csv.NewWriter(csvFile) for _, usance := range jsonData { var row []string row = append(row, usance.App) row = append(row, usance.Company) row = append(row, usance.Category) writer.Write(row) } // remember to flush! writer.Flush() }

Ausgabe

Instagram,Facebook,Social Media WeChat,Tencent,Social Media Hotstar,Disney,Entertainment CNBC,Comcast,News SnapChat,Snap,Social Media

Schließlich ist Golang: Convert JSON to CSV File Beispiel vorbei.

#json #go #golang