Parsing JSON into a struct using json.Unmarshal is a fundamental task in Go when working with APIs or reading JSON files. The encoding/json package makes this process straightforward.

Let’s say we receive the following JSON payload:

{
    "name": "John Doe",
    "age": 30,
    "email": "johndoe@example.com"
}

We can parse this JSON into a struct like this:

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name  string `json:"name"`
	Age   int    `json:"age"`
	Email string `json:"email"`
}

func main() {
	jsonData := `{"name": "John Doe", "age": 30, "email": "johndoe@example.com"}`

	var user User
	err := json.Unmarshal([]byte(jsonData), &user)
	if err != nil {
		fmt.Println("Error parsing JSON:", err)
		return
	}

	fmt.Println("Parsed User Struct:", user)
}