Функция json.Marshal

Функция json.Marshal преобразует переданные данные в JSON-формат. В первый параметр мы передаем данные для сериализации. Функция возвращает два значения: байтовый срез с JSON-данными и ошибку. Если переданные данные не могут быть сериализованы, функция вернет ошибку.

Синтаксис

gojson.Marshal(v interface{}) ([]byte, error)

Пример

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

gopackage main

import (
  "encoding/json"
  "fmt"
)

type Person struct {
  Name string
  Age  int
}

func main() {
  p := Person{Name: "John", Age: 30}
  res, err := json.Marshal(p)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(string(res))
}

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

go{"Name":"John","Age":30}

Пример

Давайте сериализуем карту с данными:

gopackage main

import (
  "encoding/json"
  "fmt"
)

func main() {
  data := map[string]int{
    "a": 1,
    "b": 2,
    "c": 3,
  }
  res, err := json.Marshal(data)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(string(res))
}

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

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

Пример

Давайте сериализуем слайс структур:

gopackage main

import (
  "encoding/json"
  "fmt"
)

type User struct {
  ID   int
  Name string
}

func main() {
  users := []User{
    {ID: 1, Name: "Alice"},
    {ID: 2, Name: "Bob"},
  }
  res, err := json.Marshal(users)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(string(res))
}

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

go[{"ID":1,"Name":"Alice"},{"ID":2,"Name":"Bob"}]

Пример

Давайте сериализуем данные с вложенной структурой:

gopackage main

import (
  "encoding/json"
  "fmt"
)

type Address struct {
  City  string
  Zip   string
}

type Employee struct {
  Name  string
  Age   int
  Address Address
}

func main() {
  e := Employee{
    Name: "John",
    Age:  25,
    Address: Address{
      City: "New York",
      Zip:  "10001",
    },
  }
  res, err := json.Marshal(e)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(string(res))
}

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

go{"Name":"John","Age":25,"Address":{"City":"New York","Zip":"10001"}}

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

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