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
+20.9k Fix "Failed to start php5-fpm.service: Unit php5-fpm.service is masked."
+23.5k Golang : Change file read or write permission example
+44.7k Golang : Encode image to base64 example
+10.1k Golang : How to use if, eq and print properly in html template
+8.2k Golang : Timeout example
+18.4k Golang : Convert(cast) bytes.Buffer or bytes.NewBuffer type to io.Reader
+12.7k Golang : Gin framework accept query string by post request example
+12.7k Golang : How to check if a file is hidden?
+7k Golang : Load DSA public key from file example
+3.9k Golang : Experimental Jawi programming language
+28.8k Get client IP Address in Go