«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как получить доступ к глубоко вложенным ключам и значениям JSON в Go?

Как получить доступ к глубоко вложенным ключам и значениям JSON в Go?

Опубликовано 8 ноября 2024 г.
Просматривать:359

How to Access Deeply Nested JSON Keys and Values in Go?

Доступ к глубоко вложенным ключам и значениям JSON в Go

При работе со сложными структурами данных JSON может быть сложно получить глубоко вложенные значения используя только стандартные интерфейсы Go. Чтобы преодолеть эту проблему, рассмотрите возможность использования пакета go-simplejson (github.com/bitly/go-simplejson).

Этот пакет предоставляет простой в использовании API для навигации по данным JSON с помощью простого синтаксиса. Вот как вы можете получить доступ к значениям «времени» в вашем JSON с помощью go-simplejson:

package main

import (
    "encoding/json"
    "fmt"
    "github.com/bitly/go-simplejson"
)

func main() {
    msg := `{"args":[{"time":"2013-05-21 16:57:17"}],"name":"send:time"}`
    jsonBytes := []byte(msg)
    js, err := simplejson.NewJson(jsonBytes)
    if err != nil {
        fmt.Println(err)
        return
    }

    // Retrieve "time" values
    timeValue, err := js.Get("args").GetIndex(0).Get("time").String()
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println("Retrieved time:", timeValue)
}

Используя go-simplejson, вы можете легко перемещаться по вложенным структурам JSON и получать значения с помощью таких методов, как Get, GetIndex и String.

Для сложных структур данных вы также можете определить свои собственная структура типа для представления данных JSON. Например, вы можете создать следующую структуру:

type TimeInfo struct {
    Time string
}

type DataStruct struct {
    Name string
    Args []TimeInfo
}

Чтобы демаршалировать JSON в эту структуру, вы можете использовать следующий код:

var dataStruct DataStruct
err = json.Unmarshal(jsonBytes, &dataStruct)
if err != nil {
    fmt.Println(err)
    return
}

Этот подход обеспечивает более структурированный способ представления ваших данных JSON, что упрощает работу и обслуживание.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3