Функция json.Compact

Функция json.Compact удаляет все лишние пробельные символы (пробелы, табуляции, переводы строк) из JSON-данных, оставляя только необходимые разделители между элементами. В первый параметр функция принимает объект io.Writer, в который будет записан результат, во второй параметр - срез байт []byte с исходными JSON-данными. Функция возвращает ошибку, если исходные данные не являются валидным JSON.

Синтаксис

gojson.Compact(dst, src)

Пример

Давайте удалим все пробельные символы из отформатированного JSON:

gopackage main

import (
  "bytes"
  "encoding/json"
  "fmt"
)

func main() {
  prettyJSON := []byte(`{
    "name": "John",
    "age": 30,
    "city": "New York"
  }`)

  var buf bytes.Buffer
  err := json.Compact(&buf, prettyJSON)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Println(buf.String())
}

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

go{"name":"John","age":30,"city":"New York"}

Пример

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

gopackage main

import (
  "bytes"
  "encoding/json"
  "fmt"
)

func main() {
  minifiedJSON := []byte(`{"id":123,"active":true,"tags":["go","json"]}`)

  var buf bytes.Buffer
  err := json.Compact(&buf, minifiedJSON)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Println(buf.String())
}

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

go{"id":123,"active":true,"tags":["go","json"]}

Пример

Давайте попробуем обработать невалидный JSON и посмотрим на возвращаемую ошибку:

gopackage main

import (
  "bytes"
  "encoding/json"
  "fmt"
)

func main() {
  invalidJSON := []byte(`{"name": "John", "age": 30,}`)

  var buf bytes.Buffer
  err := json.Compact(&buf, invalidJSON)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Println(buf.String())
}

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

go"Error: invalid character '}' looking for beginning of object key string"

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

  • функцию json.Indent,
    которая добавляет отступы для форматирования JSON
  • функцию json.Marshal,
    которая преобразует Go-значение в JSON-строку
  • функцию json.Unmarshal,
    которая преобразует JSON-данные в Go-значение
  • функцию json.Valid,
    которая проверяет валидность JSON-данных