json.Marshal(v) - структура в JSON; json.Unmarshal(data, &v) - JSON в структуру. Теги json:"name" задают имя поля; omitempty не выводит нулевые значения. Вложенные структуры, срезы, мапы поддерживаются. Ошибки при несовпадении типов. Для потоковой обработки json.Decoder/Encoder.
type User struct {
ID int // json:"id"
Name string // json:"name,omitempty"
}
data, _ := json.Marshal(user)
var u User
json.Unmarshal(data, &u)