Как правильно работать с json в Go?

Работа с JSON в Go довольно проста и удобна, благодаря стандартной библиотеке "encoding/json".

Первым шагом для работы с JSON в Go является импорт пакета encoding/json:

import "encoding/json"

Далее, вам необходимо определить структуру данных, с которой вы будете работать. Структура должна быть задана с использованием тегов JSON, чтобы установить связь между полями структуры и JSON-данными:

type Person struct {
    Name  string `json:"name"`
    Age   int    `json:"age"`
    Email string `json:"email"`
}

Для преобразования данных в формат JSON вы можете использовать функцию Marshal из пакета "encoding/json". Эта функция принимает объект и возвращает его представление в формате JSON в виде среза байтов:

person := Person{Name: "John", Age: 30, Email: "[email protected]"}

jsonData, err := json.Marshal(person)
if err != nil {
    log.Fatal(err)
}

fmt.Println(string(jsonData)) // выводит: {"name":"John","age":30,"email":"[email protected]"}

Для обратного преобразования JSON-данных в структуру Go вы можете использовать функцию Unmarshal. Эта функция принимает срез байтов и указатель на структуру, в которую будут размещаться данные:

jsonData := []byte(`{"name":"John","age":30,"email":"[email protected]"}`)

var person Person
err := json.Unmarshal(jsonData, &person)
if err != nil {
    log.Fatal(err)
}

fmt.Println(person.Name)  // выводит: John
fmt.Println(person.Age)   // выводит: 30
fmt.Println(person.Email) // выводит: [email protected]

Кроме того, "encoding/json" предоставляет ряд дополнительных функций для работы с JSON, таких как MarshalIndent, который преобразует данные в форматированный JSON, NewEncoder и NewDecoder, которые позволяют работать с потоками данных JSON.

В целом, работа с JSON в Go с использованием стандартной библиотеки довольно проста и мощна, упрощая обработку данных в формате JSON.