Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpJsTg 180 of 280 menu
◀ ▶

Метки полей JSON в Go

Метка поля задает имя ключа в тексте, отличное от имени в Go. Она пишется в обратных кавычках после типа поля, ключ json и имя ключа разделяют двоеточие внутри строки метки.

Без метки в текст попадает только поле с большой буквы, и ключ совпадает с именем поля. Поле с маленькой буквы снаружи пакета не видно, поэтому в текст оно не попадает.

Объявим пользователя с меткой у имени и полем, которое останется только в Go:

package main import ( "encoding/json" "fmt" ) type User struct { Name string `json:"name"` age int } func main() { u := User{Name: "ann", age: 20} data, err := json.Marshal(u) if err != nil { fmt.Println("error") return } fmt.Println(string(data)) }

На экране {"name":"ann"}. Ключ "name" взят из метки, а поле age в текст не попало.

Если у экспортируемого поля метки нет, ключ в тексте совпадает с именем поля:

package main import ( "encoding/json" "fmt" ) type Item struct { Title string } func main() { item := Item{Title: "go"} data, _ := json.Marshal(item) fmt.Println(string(data)) }

Дана структура:

type Row struct { Code int `json:"code"` note string }

Скажите, какие ключи появятся в тексте при сборке значения с заполненными полями.

Дана структура:

type Label struct { Text string `json:"label"` }

Соберите текст для значения с полем "hi" и выведите его.

Дана структура:

type Pair struct { Left int `json:"left"` Right int }

Укажите имена ключей для обоих полей без запуска программы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить