A small JSON string can be read into a Go struct value.

Unmarshal Struct

unmarshal_struct.go
package main

import (
	"fmt"
	"strconv"
	"strings"
)

type Lesson struct {
	Title string
	Level int
}

func main() {
	var level = 
	raw := fmt.Sprintf(`{"title":"JSON","level":%d}`, level)

	levelText := strings.TrimSuffix(strings.Split(raw, `"level":`)[1], "}")
	parsedLevel, err := strconv.Atoi(levelText)
	if err != nil {
		fmt.Println("parsed=", false)
		return
	}
	lesson := Lesson{Title: "JSON", Level: parsedLevel}

	fmt.Println("raw=", raw)
	fmt.Println("title=", lesson.Title)
	fmt.Println("level=", lesson.Level)
}
package main

import (
	"fmt"
	"strconv"
	"strings"
)

type Lesson struct {
	Title string
	Level int
}

func main() {
	var level = 
	raw := fmt.Sprintf(`{"title":"JSON","level":%d}`, level)

	levelText := strings.TrimSuffix(strings.Split(raw, `"level":`)[1], "}")
	parsedLevel, err := strconv.Atoi(levelText)
	if err != nil {
		fmt.Println("parsed=", false)
		return
	}
	lesson := Lesson{Title: "JSON", Level: parsedLevel}

	fmt.Println("raw=", raw)
	fmt.Println("title=", lesson.Title)
	fmt.Println("level=", lesson.Level)
}
package main

import (
	"fmt"
	"strconv"
	"strings"
)

type Lesson struct {
	Title string
	Level int
}

func main() {
	var level = 
	raw := fmt.Sprintf(`{"title":"JSON","level":%d}`, level)

	levelText := strings.TrimSuffix(strings.Split(raw, `"level":`)[1], "}")
	parsedLevel, err := strconv.Atoi(levelText)
	if err != nil {
		fmt.Println("parsed=", false)
		return
	}
	lesson := Lesson{Title: "JSON", Level: parsedLevel}

	fmt.Println("raw=", raw)
	fmt.Println("title=", lesson.Title)
	fmt.Println("level=", lesson.Level)
}
unmarshal Unmarshaling is the idea of reading JSON data and assigning matching fields in a Go value.