Функция json.NewDecoder
Функция json.NewDecoder создает новый декодер, который читает
JSON-данные из указанного потока ввода. В качестве параметра она принимает
объект, реализующий интерфейс io.Reader, и возвращает указатель
на json.Decoder. Этот декодер позволяет последовательно читать
JSON-значения из потока, что особенно полезно при работе с большими
объемами данных или потоковыми источниками.
Синтаксис
json.NewDecoder(reader io.Reader) *json.Decoder
Пример
Давайте декодируем JSON-строку в структуру с помощью
json.NewDecoder:
package main
import (
"encoding/json"
"fmt"
"strings"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonData := `{"name":"Alice","age":30}`
reader := strings.NewReader(jsonData)
decoder := json.NewDecoder(reader)
var user User
err := decoder.Decode(&user)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(user)
}
Результат выполнения кода:
{Alice 30}
Пример
Давайте декодируем JSON-строку в карту (map) с помощью
json.NewDecoder:
package main
import (
"encoding/json"
"fmt"
"strings"
)
func main() {
jsonData := `{"name":"Alice","age":30,"active":true}`
reader := strings.NewReader(jsonData)
decoder := json.NewDecoder(reader)
var data map[string]interface{}
err := decoder.Decode(&data)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(data)
}
Результат выполнения кода:
map[active:true age:30 name:Alice]
Пример
Давайте декодируем массив JSON-объектов с помощью
json.NewDecoder:
package main
import (
"encoding/json"
"fmt"
"strings"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonData := `[{"name":"Alice","age":30},{"name":"Bob","age":25}]`
reader := strings.NewReader(jsonData)
decoder := json.NewDecoder(reader)
var users []User
err := decoder.Decode(&users)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(users)
}
Результат выполнения кода:
[{Alice 30} {Bob 25}]
Смотрите также
-
функцию
json.NewEncoder,
которая создает новый кодер для записи JSON в поток вывода -
функцию
json.Decoder.Decode,
которая считывает следующее JSON-значение из потока -
функцию
json.Unmarshal,
которая декодирует JSON в структуру из строки -
функцию
json.Decoder.Token,
которая считывает отдельные токены JSON для потоковой обработки