Как распарсить json вложенных структур?

В языке программирования Go есть встроенная поддержка для работы с JSON-данными. Распарсить JSON вложенных структур можно, используя стандартную библиотеку encoding/json.

Первым шагом необходимо определить структуру данных, которая будет представлять ваш JSON. Структура должна иметь поля, совпадающие с полями в JSON-документе.

Пример структуры JSON и соответствующей ей Go-структуры:

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

type Address struct {
    Street  string `json:"street"`
    City    string `json:"city"`
    Country string `json:"country"`
}

Далее, вы можете использовать функцию json.Unmarshal для распарсинга JSON-строки в Go-структуру:

jsonString := `{
    "name": "John Doe",
    "age": 30,
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "country": "USA"
    }
}`

var person Person
err := json.Unmarshal([]byte(jsonString), &person)
if err != nil {
    // Обработка ошибки
}

После вызова Unmarshal, поля структуры будут заполнены соответствующими значениями из JSON-строки. Вы можете получить доступ к этим значениям, обращаясь к полям структуры:

fmt.Println(person.Name)                // Выведет "John Doe"
fmt.Println(person.Age)                 // Выведет 30
fmt.Println(person.Address.Street)      // Выведет "123 Main St"
fmt.Println(person.Address.City)        // Выведет "New York"
fmt.Println(person.Address.Country)     // Выведет "USA"

Важно обратить внимание, что имена полей в Go структуре должны быть публичными (начинаться с заглавной буквы), чтобы они были доступным для распаковки JSON-данных.

Также не забывайте проверять ошибку после вызова Unmarshal. Если JSON-строка не соответствует указанной структуре, или содержит неверные типы данных, Unmarshal вернет ошибку. В этом случае вам следует обработать ошибку соответствующим образом.

Вот так можно распарсить вложенные структуры JSON в языке программирования Go.