JSON and Data Exchange
Unmarshal Struct
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.