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
+7.9k Swift : Convert (cast) String to Double
+5.5k Golang : fmt.Println prints out empty data from struct
+7k Golang : How to setup a disk space used monitoring service with Telegram bot
+15.3k Golang : How to check if IP address is in range
+8.9k Golang : Executing and evaluating nested loop in html template
+17.7k Convert JSON to CSV in Golang
+7.3k Golang : Dealing with postal or zip code example
+9.6k Golang : Get all countries currencies code in JSON format
+8.6k PHP : How to parse ElasticSearch JSON ?
+13.5k Golang : Read from buffered reader until specific number of bytes
+7.4k Golang : How to fix html/template : "somefile" is undefined error?
+20.8k Golang : Secure(TLS) connection between server and client