Hello everyone, The golang has a lot of notable features to support developers to develop an application, and performing the marshalling and unmarshalling is a most common and frequent activity for any software application during the development. In this tutorial, we will show you how to perform a json marshalling and unmarshalling in golang. This tutorial has step by step approach and the example program, which has been tested and shared in the same post.

What is Marshalling and Unmarshalling?
The marshalling is a process of converting an object(type) into a JSON string or file. But, Unmarshalling is a reverse process of marshalling, which means the given json string or file will be converted to the desired object(type).
#1 Creating a type in golang
In order to perform the json marshalling and unmarshalling in golang, first of all, you need a model (i.e. type) in golang. The below snippet will give you an idea about how to create a type in golang.
// creating a type in golang type Employee struct { Id int Name string Age int }
In golang, the type can be created using “type” and “struct” keywords, inside the type you can add an attribute with it`s data-type.
#2 JSON Marshalling in golang
Once, the type(model) is created, we can pass the same to perform json marshalling in golang by using json.Marshal() function.
// function to perform marshalling func doMarshall(emp Employee) { data, err := json.Marshal(emp) if err != nil { fmt.Println("Error!") // error message } os.Stdout.Write(data) }
#3 JSON Unmarshalling in golang
The JSON unmarshalling in golang is quite easier to perform, In order to do that, you simply need to pass the JSON string with the type that needs to be converted. The unmarshalling can be done using json.unmarshalling() function in golang.
// function to perform unmarshalling func doUnMarshall(jsonString string) { var emp Employee; err := json.Unmarshal([]byte(jsonString), &emp) if err != nil { fmt.Println("Error!") // error message } fmt.Println("\n", emp) }
#4 Full program(JSON marshalling and unmarshalling in golang)
I hope now you understand how to perform a marshalling and unmarshalling in golang, please find the complete program below to use it as part of your application.
package main import ( "encoding/json" "fmt" "os" ) // creating a type in golang type Employee struct { Id int Name string Age int } func main() { // assigning values to Employee type e := Employee { Id: 1, Name: "Dinesh Krishnan", Age: 20, } // performing JSON marshalling doMarshall(e) // performing JSON unmarshalling doUnMarshall("{\"Id\":1,\"Name\":\"Dinesh Krishnan\",\"Age\":20}") } // function to perform marshalling func doMarshall(emp Employee) { data, err := json.Marshal(emp) if err != nil { fmt.Println("Error!") // error message } os.Stdout.Write(data) } // function to perform unmarshalling func doUnMarshall(jsonString string) { var emp Employee; err := json.Unmarshal([]byte(jsonString), &emp) if err != nil { fmt.Println("Error!") // error message } fmt.Println("\n", emp) }
Output
{"Id":1,"Name":"Dinesh Krishnan","Age":20} {1 Dinesh Krishnan 20}
References
- https://golang.org/doc/
- https://golang.org/pkg/
- https://golang.org/pkg/fmt/
- https://golang.org/pkg/fmt/#Println
- https://golang.org/pkg/encoding/json/
More from my site

Hello, folks, I am a founder of idineshkrishnan.com. I love open source technologies, If you find my tutorials are useful, please consider making donations to these charities.
No responses yet