Analyse de plusieurs objets JSON dans Go : adressage des objets imbriqués
Lors du traitement de plusieurs objets JSON renvoyés par un serveur sous la forme d'objets imbriqués , le package standard encoding/json peut rencontrer des difficultés. Cet article examine une solution utilisant un json.Decoder pour gérer efficacement de tels scénarios.
Considérez l'exemple suivant :
{"something":"foo"} {"something-else":"bar"}
Utilisation du code suivant pour analyser ces données :
correct_format := strings.Replace(string(resp_body), "}{", "},{", -1) json_output := "[" + correct_format + "]"
entraîne une erreur.
Solution utilisant json.Decoder
Pour résoudre ce problème, nous utilisons un json.Decoder. Un json.Decoder lit et décode un flux de données JSON, décodant séquentiellement les objets JSON individuels à partir de l'entrée.
package main import ( "encoding/json" "fmt" "io" "log" "strings" ) var input = ` {"foo": "bar"} {"foo": "baz"} ` type Doc struct { Foo string } func main() { dec := json.NewDecoder(strings.NewReader(input)) for { var doc Doc err := dec.Decode(&doc) if err == io.EOF { // all done break } if err != nil { log.Fatal(err) } fmt.Printf("%+v\n", doc) } }
Dans cette solution :
Playground et Conclusion
Vous pouvez tester cette solution sur le Go Playground : https://play.golang.org/p/ANx8MoMC0yq
En utilisant un json.Decoder, nous sommes capables d'analyser plusieurs objets JSON, même lorsqu'ils sont imbriqués dans une structure JSON plus grande.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!