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
+16.2k Golang : How to reverse elements order in map ?
+4.4k Golang : Converting individual Jawi alphabet to Rumi(Romanized) alphabet example
+6.8k Golang : Experimental emojis or emoticons icons programming language
+12.9k Android Studio : Highlight ImageButton when pressed on example
+34.1k Golang : Proper way to set function argument default value
+12.5k Golang : Validate email address
+10.1k Golang : Channels and buffered channels examples
+8k Golang : Gomobile init produce "iphoneos" cannot be located error
+10k Golang : ffmpeg with os/exec.Command() returns non-zero status
+5.8k Get website traffic ranking with Similar Web or Alexa
+88.4k Golang : How to convert character to ASCII and back
+7.6k Golang : How to stop user from directly running an executable file?