JSON Unmarshal: кодер и декодер
Go предоставляет json/Encoder, а json/Decoder структурирует типы для кодирования JSON из потока данных и декодирования JSON в поток данных. Это полезно для обработки JSON, поскольку некоторые данные доступны.
Кодер
Тип структуры json/Encoder позволяет создать структуру, которая содержит объект io.Writer и предоставляет метод Encode() для кодирования JSON из объекта и записи в этот объект io.Writer.
Но сначала нужно создать объект *Encoder с io.Writer, используя функцию NewEncoder.
Каждый раз, когда вызывается метод Encode(), JSON маршалирует v и добавляется к w завершающему символу новой строки.
Пришло время поработать с кодом!
В приведенном выше примере мы использовали *__Buffer__, потому что он реализует интерфейс io.Writer путем реализации метода Write.
Декодер
Тип структуры json/Decoder позволяет создать структуру, которая содержит объект io.Reader и предоставляет метод Decode() для декодирования JSON из этого объекта и записи в объект io.Writer.
Если все строки io.Reader были прочитаны, то следующий вызов Decode возвращает ошибку io.EOF. Но сначала нам нужно создать объект *Decoder с io.Reader используя функцию NewDecoder.
Каждый раз, когда вызывается метод Decode(), JSON демаршализируется путем чтения строки r с символом новой строки в конце и сохраняется в v.
Пришло время поработать с кодом!
Материалы по теме собраны из статьи Working with JSON in Go.