Accès aux clés et valeurs JSON profondément imbriquées dans Go
Lorsque vous travaillez avec des structures de données JSON complexes, il peut être difficile de récupérer des valeurs profondément imbriquées en utilisant uniquement les interfaces Go standard. Pour surmonter ce problème, envisagez d'utiliser le package go-simplejson (github.com/bitly/go-simplejson).
Ce package fournit une API facile à utiliser pour naviguer dans les données JSON via une syntaxe simple. Voici comment accéder aux valeurs "time" dans votre JSON donné à l'aide de 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)
}
En utilisant go-simplejson, vous pouvez facilement parcourir des structures JSON imbriquées et récupérer des valeurs à l'aide de méthodes telles que Get, GetIndex et String.
Pour les structures de données complexes, vous pouvez également définir votre propre structure de type pour représenter les données JSON. Par exemple, vous pouvez créer la structure suivante :
type TimeInfo struct {
Time string
}
type DataStruct struct {
Name string
Args []TimeInfo
}
Pour désorganiser votre JSON dans cette structure, vous pouvez utiliser le code suivant :
var dataStruct DataStruct
err = json.Unmarshal(jsonBytes, &dataStruct)
if err != nil {
fmt.Println(err)
return
}
Cette approche offre une manière plus structurée de représenter vos données JSON, ce qui facilite leur utilisation et leur maintenance.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3