How to parse JSON in GO

The go standard library has all you json needs covered. The JSON package has methods for both encoding and decoding to/from JSON.

package main
import "fmt"
import "log"
import "encoding/json"

type person struct {
	Name string
}

func main() {
	var p person
	b := []byte(`{"name": "Claus Witt"}`)
	err := json.Unmarshal(b, &p)
	if err != nil {
		log.Fatal(err)
	} else {
		fmt.Println(p.Name)
	}
}

First we import three packages fmt, for outputting the final result, log for logging errors and finally encoding/json for parsing the json string.

We use the same simple json string as the other examples. But this time there is a bit more ceremony. Even though you can parse arbitrary json strings into data structures you can use - the preferred way to decode a string is to define a struct into which the string will be decoded. So even though you need to write a bit more code, you’ll get compile time guarantees for your data.

We define a struct with a single string field. And the enter the json string as an array of raw bytes.

Finally we call json.Unmarshall for decoding the string into the struct - and printing the decoded name from the struct.