Golang : Save map/struct to JSON or XML file
Previous tutorial on converting map/slice/array to JSON or XML format is for output to web via net/http
package. This tutorial is a slight modification and save the output to JSON or XML file instead.
Here you go!
package main
import (
"encoding/json"
"encoding/xml"
"fmt"
"io"
"os"
"strconv"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// create and populate a map from dummy JSON data
dataStr := `{"Name":"Dummy","Age":0}`
personMap := make(map[string]interface{})
err := json.Unmarshal([]byte(dataStr), &personMap)
if err != nil {
panic(err)
}
var onePerson Person
// convert map to Person struct
onePerson.Name = fmt.Sprintf("%s", personMap["Name"])
onePerson.Age, _ = strconv.Atoi(fmt.Sprintf("%v", personMap["Age"]))
jsonData, err := json.Marshal(onePerson)
if err != nil {
panic(err)
}
// sanity check
fmt.Println(string(jsonData))
// write to JSON file
jsonFile, err := os.Create("./Person.json")
if err != nil {
panic(err)
}
defer jsonFile.Close()
jsonFile.Write(jsonData)
jsonFile.Close()
fmt.Println("JSON data written to ", jsonFile.Name())
// write to XML file
xmlFile, err := os.Create("./Person.xml")
if err != nil {
panic(err)
}
defer xmlFile.Close()
xmlWriter := io.Writer(xmlFile)
enc := xml.NewEncoder(xmlWriter)
enc.Indent(" ", " ")
if err := enc.Encode(onePerson); err != nil {
fmt.Printf("error: %v\n", err)
}
xmlFile.Close()
fmt.Println("XML data written to ", xmlFile.Name())
}
Output:
{"name":"Dummy","age":0}
JSON data written to ./Person.json
XML data written to ./Person.xml
References:
https://www.socketloop.com/tutorials/golang-create-new-xml-file
https://www.socketloop.com/tutorials/golang-xml-to-json-example
https://www.socketloop.com/tutorials/golang-covert-map-slice-array-to-json-xml-format
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.8k Golang : Emulate NumPy way of creating matrix example
+22.5k Golang : Gorilla mux routing example
+12.1k Android Studio : Highlight ImageButton when pressed on example
+7k Golang : Process json data with Jason package
+10.2k Golang : Get local time and equivalent time in different time zone
+8.4k Golang : Gorilla web tool kit schema example
+7k Golang : Individual and total number of words counter example
+6.2k Golang : Embedded or data bundling example
+21.8k Golang : Repeat a character by multiple of x factor
+11.3k Golang : How to detect a server/machine network interface capabilities?
+13.4k Golang : How to check if a file is hidden?
+7.8k Golang : Qt splash screen with delay example