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

Функция json.MarshalIndent

Функция json.MarshalIndent преобразует переданное значение в JSON-строку с отступами и префиксами, делая вывод удобным для чтения человеком. В первый параметр передается значение, которое нужно сериализовать. Во второй параметр передается префикс (строка, добавляемая перед каждой строкой вывода). В третий параметр передается строка отступа (обычно пробелы или табуляция для вложенных структур). Функция возвращает байтовый срез и ошибку, если сериализация невозможна.

Синтаксис

json.MarshalIndent(v any, prefix, indent string) ([]byte, error)

Пример с простой структурой

Давайте сериализуем структуру с отступом в 2 пробела:

package main import ( "encoding/json" "fmt" ) type User struct { Name string Age int } func main() { u := User{Name: "Alice", Age: 30} res, err := json.MarshalIndent(u, "", " ") if err != nil { fmt.Println(err) return } fmt.Println(string(res)) }

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

{ "Name": "Alice", "Age": 30 }

Пример с картой (map)

Сериализуем карту с отступом в виде табуляции:

package main import ( "encoding/json" "fmt" ) func main() { m := map[string]int{"a": 1, "b": 2, "c": 3} res, err := json.MarshalIndent(m, "", "\t") if err != nil { fmt.Println(err) return } fmt.Println(string(res)) }

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

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

Пример с префиксом

Добавим префикс ">>" перед каждой строкой вывода:

package main import ( "encoding/json" "fmt" ) func main() { data := []string{"a", "b", "c", "d", "e"} res, err := json.MarshalIndent(data, ">>", " ") if err != nil { fmt.Println(err) return } fmt.Println(string(res)) }

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

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

Пример с вложенными структурами

Сериализуем вложенную структуру для наглядной демонстрации отступов:

package main import ( "encoding/json" "fmt" ) type Address struct { City string Zip int } type Person struct { Name string Age int Address Address } func main() { p := Person{ Name: "Bob", Age: 25, Address: Address{ City: "NY", Zip: 10001, }, } res, err := json.MarshalIndent(p, "", " ") if err != nil { fmt.Println(err) return } fmt.Println(string(res)) }

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

{ "Name": "Bob", "Age": 25, "Address": { "City": "NY", "Zip": 10001 } }

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

  • функцию json.Marshal,
    которая выполняет сериализацию без форматирования
  • функцию json.Unmarshal,
    которая десериализует JSON в структуру или карту
  • функцию json.Indent,
    которая добавляет отступы к существующему JSON
  • функцию json.Valid,
    которая проверяет корректность JSON
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить