Convert JSON to CSV in Golang
Need to load a data file with JSON encoded data and save it to CSV file ? This tutorial will cover just that :
The Golang code below will first read this JSON data file :
data.json
[
{"Name":"Adam","Age":36,"Job":"CEO"},
{"Name":"Eve","Age":34,"Job":"CFO"},
{"Name":"Mike","Age":38,"Job":"COO"}
]
and output to data.csv file
Adam,36,CEO
Eve,34,CFO
Mike,38,COO
json2csv.go
package main
import (
"fmt"
"io/ioutil"
"encoding/json"
"os"
"strconv"
"encoding/csv"
)
type Employee struct {
Name string
Age int
Job string
}
func main() {
// read data from file
jsondatafromfile, err := ioutil.ReadFile("./data.json")
if err != nil {
fmt.Println(err)
}
// Unmarshal JSON data
var jsondata []Employee
err = json.Unmarshal([]byte(jsondatafromfile), &jsondata)
if err != nil {
fmt.Println(err)
}
csvdatafile, err := os.Create("./data.csv")
if err != nil {
fmt.Println(err)
}
defer csvdatafile.Close()
writer := csv.NewWriter(csvdatafile)
for _, worker := range jsondata {
var record []string
record = append(record, worker.Name)
record = append(record, strconv.Itoa(worker.Age))
record = append(record, worker.Job)
writer.Write(record)
}
// remember to flush!
writer.Flush()
}
Hope this simple tutorial can be useful to you.
References :
https://www.socketloop.com/tutorials/golang-convert-type-integer-to-string
https://www.socketloop.com/references/golang-encoding-json-unmarshal-function-example
See also : Golang : Convert CSV data to JSON format and save to file
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+14k Golang : Get timezone offset from date or timestamp
+10.7k Golang : Gorilla web tool kit secure cookie example
+8.2k Golang : does not implement flag.Value (missing Set method)
+22.8k Golang : How to validate URL the right way
+21.2k Golang : Convert Unix timestamp to UTC timestamp
+17.7k Golang : convert int to string
+29.2k Golang : How to redirect to new page with net/http?
+39.7k Golang : How to check if a string contains another sub-string?
+5.1k Golang : Extract XML attribute data with attr field tag example
+16.3k Golang : Login and logout a user after password verification and redirect example
+7.6k Golang : Progress bar with ∎ character
+23.5k Golang : convert rune to integer value