6 вопросов
Работа с JSON в Go: encoding/json, кастомный MarshalJSON/UnmarshalJSON, json.Decoder для потоков, RawMessage для отложенного парсинга, struct tags, encoding/gob для Go-to-Go.
"-" - поле полностью игнорируется; omitempty - поле не пишется в JSON, если оно пустое (0, "", nil, пустой срез/map).
Подробнее →MarshalJSON/UnmarshalJSON позволяют задать свое представление типа в JSON (формат времени, enum, вложенные структуры).
Подробнее →Decoder потоковый (io.Reader), Unmarshal работает с полным срезом байт; для стримов предпочтителен Decoder.
Подробнее →RawMessage - это []byte, который при сериализации/десериализации остается сырым JSON; удобно для отложенного парсинга.
Подробнее →Unmarshal в map[string]interface{} или interface{} дает дерево map/[]interface{}/примитивы.
Подробнее →gob - бинарный формат Go для эффективной сериализации между Go-процессами; не предназначен для других языков.
Подробнее →