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

Пустое поле в JSON в Go

Метка пропуска пустое поле, чтобы его не было в тексте. К имени ключа через запятую добавляют слово omitempty; при нулевом значении поля ключ не записывают.

Нулевым считают пустую строку, число 0, false, пустой срез, пустую карту и nil для указателя. Если значение задано, ключ появляется как обычно.

Сравним запись с заметкой и без нее:

package main import ( "encoding/json" "fmt" ) type Item struct { Title string `json:"title"` Note string `json:"note,omitempty"` } func main() { withNote := Item{Title: "go", Note: "ok"} emptyNote := Item{Title: "go"} a, _ := json.Marshal(withNote) b, _ := json.Marshal(emptyNote) fmt.Println(string(a)) fmt.Println(string(b)) }

Первая строка содержит "note", во второй ключа "note" нет. Поле Title остается в обеих строках.

Тот же флаг работает для чисел:

package main import ( "encoding/json" "fmt" ) type Score struct { Name string `json:"name"` Bonus int `json:"bonus,omitempty"` } func main() { s := Score{Name: "ann"} data, _ := json.Marshal(s) fmt.Println(string(data)) }

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

type Row struct { Code int `json:"code"` Flag bool `json:"flag,omitempty"` }

Соберите текст для значения с кодом 1 и Flag равным false и скажите, будет ли ключ "flag".

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

type Bag struct { Tags []string `json:"tags,omitempty"` }

Соберите текст для нулевого значения и скажите, появится ли ключ "tags".

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

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

При сборке значения с Left равным 0 и Right равным 5 перечислите ключи, которые останутся в тексте.

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