РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1133 of 1593 menu

Метод json.Encoder.Encode

Метод json.Encoder.Encode преобразует переданное значение в JSON-формат и записывает результат в поток вывода, связанный с экземпляром Encoder. В качестве параметра метод принимает произвольное значение any, которое необходимо закодировать. Возвращает метод ошибку типа error, если в процессе кодирования или записи произошла ошибка. В отличие от json.Marshal, метод записывает данные напрямую в поток, что удобно при работе с большими объемами данных.

Синтаксис

err := encoder.Encode(v)

Пример

Давайте создадим структуру пользователя и закодируем ее в JSON с помощью json.Encoder.Encode:

package main import ( "encoding/json" "fmt" "os" ) type User struct { ID int `json:"id"` Name string `json:"name"` IsActive bool `json:"is_active"` } func main() { user := User{ ID: 1, Name: "Alice", IsActive: true, } encoder := json.NewEncoder(os.Stdout) err := encoder.Encode(user) if err != nil { fmt.Println(err) } }

Результат выполнения кода:

{"id":1,"name":"Alice","is_active":true}

Пример

Теперь давайте закодируем карту с несколькими значениями в JSON:

package main import ( "encoding/json" "fmt" "os" ) func main() { data := map[string]int{ "a": 1, "b": 2, "c": 3, } encoder := json.NewEncoder(os.Stdout) err := encoder.Encode(data) if err != nil { fmt.Println(err) } }

Результат выполнения кода:

{"a":1,"b":2,"c":3}

Пример

Давайте рассмотрим пример кодирования слайса строк в JSON:

package main import ( "encoding/json" "fmt" "os" ) func main() { slice := []string{"a", "b", "c", "d", "e"} encoder := json.NewEncoder(os.Stdout) err := encoder.Encode(slice) if err != nil { fmt.Println(err) } }

Результат выполнения кода:

["a","b","c","d","e"]

Пример

Рассмотрим пример кодирования данных в файл с помощью json.Encoder.Encode:

package main import ( "encoding/json" "fmt" "os" ) type Product struct { Name string `json:"name"` Price float64 `json:"price"` } func main() { products := []Product{ {Name: "Laptop", Price: 999.99}, {Name: "Mouse", Price: 25.50}, } file, err := os.Create("products.json") if err != nil { fmt.Println(err) return } defer file.Close() encoder := json.NewEncoder(file) err = encoder.Encode(products) if err != nil { fmt.Println(err) } }

Результат выполнения кода:

[{"name":"Laptop","price":999.99},{"name":"Mouse","price":25.5}]

Смотрите также

  • функцию json.Marshal,
    которая возвращает закодированное значение как байтовый срез
  • функцию json.MarshalIndent,
    которая форматирует JSON с отступами для улучшения читаемости
  • метод json.Encoder,
    который представляет объект для записи JSON-данных в поток
  • метод json.NewEncoder,
    который создает новый экземпляр Encoder для заданного потока
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить