Функция json.Compact
Функция json.Compact удаляет все лишние пробельные символы
(пробелы, табуляции, переводы строк) из JSON-данных, оставляя
только необходимые разделители между элементами. В первый параметр
функция принимает объект io.Writer, в который будет записан
результат, во второй параметр - срез байт []byte с исходными
JSON-данными. Функция возвращает ошибку, если исходные данные
не являются валидным JSON.
Синтаксис
json.Compact(dst, src)
Пример
Давайте удалим все пробельные символы из отформатированного JSON:
package 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())
}
Результат выполнения кода:
{"name":"John","age":30,"city":"New York"}
Пример
Давайте обработаем JSON с минимальными пробелами и проверим результат работы функции:
package 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())
}
Результат выполнения кода:
{"id":123,"active":true,"tags":["go","json"]}
Пример
Давайте попробуем обработать невалидный JSON и посмотрим на возвращаемую ошибку:
package 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())
}
Результат выполнения кода:
"Error: invalid character '}' looking for beginning of object key string"
Смотрите также
-
функцию
json.Indent,
которая добавляет отступы для форматирования JSON -
функцию
json.Marshal,
которая преобразует Go-значение в JSON-строку -
функцию
json.Unmarshal,
которая преобразует JSON-данные в Go-значение -
функцию
json.Valid,
которая проверяет валидность JSON-данных