Convert Map to JSON

To convert Map object to JSON string in Go language, import the package encode/json, call json.Marshall() function and pass the map object as argument to the function. The function returns json string and an error object.

In this tutorial, we will learn how to convert Map object to a JSON string.

Syntax

The syntax to convert Map x to json is

jsonStr, err := json.Marshal(x)

JSON supports key of string type only. So, if key in Map is of int type, then this key would be transformed to a String in JSON.

Return Values

If there is any error while conversion, err object would be assigned the error.

If there is no error, then err object would be assigned nil and the jsonStr contains the converted JSON string value.

ADVERTISEMENT

Examples

In the following program, we take a map map1 and convert this map to JSON string.

example.go

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	map1 := map[string]string{
		"a": "apple",
		"b": "banana",
	}

	jsonStr, err := json.Marshal(map1)
	if err != nil {
		fmt.Printf("Error: %s", err.Error())
	} else {
		fmt.Println(string(jsonStr))
	}
}

Output

{"a":"apple","b":"banana"}

Map with Integer Keys to JSON

If keys in map are integer values, then the resulting JSON string would contain these keys as string values.

example.go

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	map1 := map[int]string{
		1: "apple",
		2: "banana",
	}

	jsonStr, err := json.Marshal(map1)
	if err != nil {
		fmt.Printf("Error: %s", err.Error())
	} else {
		fmt.Println(string(jsonStr))
	}
}

Output

{"1":"apple","2":"banana"}

Nested Map to JSON

In the following program, we will take a nested map in x, and convert this map to JSON String.

example.go

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	var x = map[string]map[string]string{}

	x["fruits"] = map[string]string{}
	x["colors"] = map[string]string{}

	x["fruits"]["a"] = "apple"
	x["fruits"]["b"] = "banana"

	x["colors"]["r"] = "red"
	x["colors"]["b"] = "blue"

	jsonStr, err := json.Marshal(x)
	if err != nil {
		fmt.Printf("Error: %s", err.Error())
	} else {
		fmt.Println(string(jsonStr))
	}
}

Output

{"colors":{"b":"blue","r":"red"},"fruits":{"a":"apple","b":"banana"}}

Conclusion

In this Golang Tutorial, we learned how to convert a Map into JSON string, with the help of example programs.