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

Функция json.Indent

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

Синтаксис

json.Indent(dst, src, prefix, indent)

Пример

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

package main import ( "bytes" "encoding/json" "fmt" ) func main() { src := []byte(`{"name":"John"}`) var dst bytes.Buffer err := json.Indent(&dst, src, "", " ") if err != nil { fmt.Println(err) return } fmt.Println(dst.String()) }

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

{ "name": "John" }

Пример

Теперь отформатируем вложенный JSON с использованием табуляции в качестве отступа:

package main import ( "bytes" "encoding/json" "fmt" ) func main() { src := []byte(`{"name":"John","age":30,"address":{"city":"New York","zip":10001}}`) var dst bytes.Buffer err := json.Indent(&dst, src, "", "\t") if err != nil { fmt.Println(err) return } fmt.Println(dst.String()) }

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

{ "name": "John", "age": 30, "address": { "city": "New York", "zip": 10001 } }

Пример

Функция json.Indent также может использоваться с пользовательским префиксом для добавления символов перед каждой строкой:

package main import ( "bytes" "encoding/json" "fmt" ) func main() { src := []byte(`{"name":"John","age":30}`) var dst bytes.Buffer err := json.Indent(&dst, src, ">> ", " ") if err != nil { fmt.Println(err) return } fmt.Println(dst.String()) }

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

>> { >> "name": "John", >> "age": 30 >> }

Пример

Если исходный JSON невалидный, функция возвращает ошибку:

package main import ( "bytes" "encoding/json" "fmt" ) func main() { src := []byte(`{"name":"John"`) var dst bytes.Buffer err := json.Indent(&dst, src, "", " ") fmt.Println(err) }

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

"unexpected end of JSON input"

Пример

Функцию json.Indent можно использовать для форматирования JSON-массива:

package main import ( "bytes" "encoding/json" "fmt" ) func main() { src := []byte(`[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]`) var dst bytes.Buffer err := json.Indent(&dst, src, "", " ") if err != nil { fmt.Println(err) return } fmt.Println(dst.String()) }

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

[ { "id": 1, "name": "Alice" }, { "id": 2, "name": "Bob" } ]

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

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