четверг, 28 мая 2020 г.

Нет JSON после маршалинга

Почему json.Marshal создает пустые структуры в текстовом выводе JSON?

type Person struct {
    name string
    age  int
}

p := Person{"Alice", 22}
jsonData, _ := json.Marshal(p)
fmt.Println(string(jsonData))

{}

Ответ

В выводе JSON будут присутствовать только экспортированные поля структуры Go.

type Person struct {
    Name string // Изменено на заглавную N
    Age  int    // Изменено на заглавную A
}

p := Person{"Alice", 22}

jsonData, _ := json.Marshal(p)
fmt.Println(string(jsonData))

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

Вы можете указать имя поля JSON явно с помощью тега json: .

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

p := Person{"Alice", 22}

jsonData, _ := json.Marshal(p)
fmt.Println(string(jsonData))

{"name":"Alice","age":22}


Читайте также:


Комментариев нет:

Отправить комментарий