Введение в JSON в Go
Формат JSON хранит объекты, массивы и числа текстом, который читают разные языки. Объект записывают фигурными скобками с парами ключ и значение, массив квадратными скобками, строки в двойных кавычках. Такой текст удобно передавать по сети и сохранять в файле без отдельного бинарного протокола.
В Go за превращение значений в этот текст
и обратно отвечает пакет encoding/json.
Структуры с полями, срезы, карты и встроенные
типы он умеет записывать по правилам формата,
если поля доступны снаружи пакета или
им заданы метки с именем ключа.
Сборка дает срез байт и ошибку: при успехе в байтах лежит готовый текст, при сбое ошибку проверяют и не используют результат. Разбор принимает байты и указатель на переменную, куда нужно положить значение; без адреса поля структуры заполнить нельзя.
В этом разделе разберем метки полей, сборку и разбор, вложенные объекты, срезы и карты, пропуск пустых полей и свой вид через методы пакета. Рефлексию здесь не повторяем: метки уже читали отдельно, а здесь они работают при записи и чтении текста.