Go

JSON Marshal / Unmarshal

admin by @admin ADMIN
8m ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
`encoding/json` is the standard library JSON parser. `Marshal` produces compact JSON; `MarshalIndent` produces pretty-printed. `Unmarshal` decodes into a typed value (struct, map, or any).
Go
Raw
package main

import (
    "encoding/json"
    "fmt"
)

type Event struct {
    Type      string         `json:"type"`
    Timestamp int64          `json:"ts"`
    Data      map[string]any `json:"data"`
}

func main() {
    // Marshal — struct to JSON
    e := Event{Type: "signup", Timestamp: 1735689600,
               Data: map[string]any{"user_id": 42, "plan": "pro"}}
    b, _ := json.Marshal(e)
    fmt.Println(string(b))
    // {"type":"signup","ts":1735689600,"data":{"plan":"pro","user_id":42}}

    pretty, _ := json.MarshalIndent(e, "", "  ")
    fmt.Println(string(pretty))

    // Unmarshal — JSON to struct
    raw := []byte(`{"type":"login","ts":1735689700,"data":{"user_id":42}}`)
    var parsed Event
    if err := json.Unmarshal(raw, &parsed); err != nil {
        fmt.Println("err:", err)
    }
    fmt.Printf("%+v\n", parsed)

    // Untyped — decode into map[string]any
    var dynamic map[string]any
    json.Unmarshal(raw, &dynamic)
    fmt.Println(dynamic["type"])                  // login
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.