WeCodeAcademy

Go JSON

The encoding/json package turns structs into JSON and back. Struct tags such as json:"name" control the field names.

ExampleGo
package main

import (
  "encoding/json"
  "fmt"
)

type Person struct {
  Name   string   `json:"name"`
  Age    int      `json:"age"`
  Skills []string `json:"skills"`
}

func main() {
  p := Person{"Ada", 36, []string{"math", "code"}}
  data, _ := json.Marshal(p)
  fmt.Println(string(data))

  var back Person
  err := json.Unmarshal([]byte(`{"name":"Sam","age":22,"skills":["go"]}`), &back)
  fmt.Println(back.Name, back.Age, back.Skills, err)

  pretty, _ := json.MarshalIndent(map[string]int{"a": 1}, "", "  ")
  fmt.Println(string(pretty))
}
Output
{"name":"Ada","age":36,"skills":["math","code"]}
Sam 22 [go] <nil>
{
  "a": 1
}
Quick check

What does the tag json:"name" do?

Finish the quick check (and any code exercise) to complete this lesson, or mark it done yourself.

Tip: use the left and right arrow keys to move between lessons.