Доступ к глубоко вложенным ключам и значениям 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