Функция json.NewEncoder
Функция json.NewEncoder создает новый экземпляр кодировщика
JSON, который записывает закодированные данные в указанный
поток вывода. В первый и единственный параметр функция принимает
объект, реализующий интерфейс io.Writer (например,
os.Stdout или bytes.Buffer). Возвращаемое значение
предоставляет метод Encode для непосредственной сериализации
данных в формат JSON.
Синтаксис
json.NewEncoder(w io.Writer) *json.Encoder
Пример
Давайте закодируем простую структуру в JSON и выведем результат в стандартный вывод:
package main
import (
"encoding/json"
"fmt"
"os"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p := Person{Name: "John", Age: 30}
enc := json.NewEncoder(os.Stdout)
err := enc.Encode(p)
if err != nil {
fmt.Println("Error:", err)
}
}
Результат выполнения кода:
{"name":"John","age":30}
Пример
Давайте закодируем данные в строку с помощью буфера:
package main
import (
"bytes"
"encoding/json"
"fmt"
)
type User struct {
ID int `json:"id"`
Email string `json:"email"`
}
func main() {
u := User{ID: 1, Email: "user@example.com"}
buf := new(bytes.Buffer)
enc := json.NewEncoder(buf)
enc.Encode(u)
res := buf.String()
fmt.Println(res)
}
Результат выполнения кода:
{"id":1,"email":"user@example.com"}
Пример
Давайте закодируем слайс строк в JSON и сохраним в буфере:
package main
import (
"bytes"
"encoding/json"
"fmt"
)
func main() {
data := []string{"a", "b", "c", "d", "e"}
buf := new(bytes.Buffer)
enc := json.NewEncoder(buf)
enc.Encode(data)
res := buf.String()
fmt.Println(res)
}
Результат выполнения кода:
["a","b","c","d","e"]
Смотрите также
-
функцию
json.NewDecoder,
которая создает декодер JSON для чтения данных -
функцию
json.Marshal,
которая сериализует данные в JSON и возвращает байтовый срез -
функцию
json.Unmarshal,
которая десериализует данные из JSON в структуру Go -
функцию
json.MarshalIndent,
которая сериализует JSON с отступами для удобочитаемости