Skip to content

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.