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

Вложенный объект в JSON в Go

Поле с типом структуры при сборке становится вложенным объектом. Ключ внешнего уровня берут из метки поля или из имени поля, а внутри лежат ключи вложенной структуры по тем же правилам.

При разборе текст объекта по ключу заполняет вложенную структуру целиком. Если внутренний объект опущен, поле остается нулевым значением типа.

Запишем человека с адресом:

package main import ( "encoding/json" "fmt" ) type Address struct { City string `json:"city"` } type Person struct { Name string `json:"name"` Addr Address `json:"address"` } func main() { p := Person{ Name: "ann", Addr: Address{City: "oslo"}, } data, err := json.Marshal(p) if err != nil { fmt.Println("error") return } fmt.Println(string(data)) }

На экране объект с ключом "address" и вложенным "city". Порядок ключей в тексте может отличаться, смысл тот же.

Разберем тот же вид текста обратно:

package main import ( "encoding/json" "fmt" ) type Address struct { City string `json:"city"` } type Person struct { Name string `json:"name"` Addr Address `json:"address"` } func main() { text := []byte(`{"name":"ann","address":{"city":"oslo"}}`) var p Person err := json.Unmarshal(text, &p) if err != nil { fmt.Println("error") return } fmt.Println(p.Addr.City) }

Даны типы:

type Size struct { W int `json:"w"` H int `json:"h"` } type Box struct { Label string `json:"label"` Size Size `json:"size"` }

Соберите текст для коробки с подписью "a" и размером 2 на 3 и выведите его.

Дана строка:

text := []byte(`{"name":"bob","address":{"city":"berlin"}}`)

Используйте типы Person и Address из урока, разберите text и выведите город.

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

type Outer struct { Inner struct { Val int `json:"val"` } `json:"inner"` }

Скажите, какой ключ появится у вложенного объекта в тексте.

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