Как работает json.Marshal/Unmarshal?

Junior
1.7k просмотров
AFK Offer AI

json.Marshal — Go-структура → JSON-байты. json.Unmarshal — JSON → структура.

type User struct {
    Name  string json:"name"
    Email string json:"email,omitempty" // пропустить если пусто
    Age   int    json:"age"
    pass  string // не экспортировано — игнорируется
}

u := User{Name: "John", Age: 30} data, _ := json.Marshal(u) // {"name":"John","age":30} — email пропущен (omitempty)

var u2 User json.Unmarshal(data, &u2) // передаём указатель!

Полезные теги:

  • json:"-" — полностью игнорировать
  • json:"name,string" — число как JSON-строка
Для стриминга больших JSON используй json.NewEncoder(w) / json.NewDecoder(r) вместо Marshal/Unmarshal — не буферизует всё в памяти.

Следующий вопрос

Что такое padding/alignment в структурах?