Maison >développement back-end >Golang >Comment analyser plusieurs objets JSON dans Go sans crochets ?
Analyse de plusieurs objets JSON dans Go
Lorsque vous traitez des données JSON, il est courant de rencontrer des situations dans lesquelles plusieurs objets JSON sont renvoyés par un serveur , plutôt qu'un seul objet entre crochets. L'analyse de ces données présente ses propres défis.
Par exemple, si vous avez une réponse au format suivant :
{"something":"foo"} {"something-else":"bar"}
Vous ne pouvez pas utiliser directement le package encoding/json pour analyser ces données , car il s'attend à ce que des crochets entourent les objets.
Pour résoudre ce problème, vous pouvez exploiter le type json.Decoder du package encoding/json. Ce type vous permet de décoder les données JSON à partir d'un flux d'octets, ce qui le rend adapté à la gestion de plusieurs objets JSON.
Voici un exemple de la façon dont vous pouvez utiliser json.Decoder pour analyser plusieurs objets JSON :
package main import ( "encoding/json" "fmt" "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 cet exemple, nous utilisons un strings.NewReader pour créer un flux d'octets à partir de notre chaîne d'entrée. Nous créons ensuite un json.Decoder pour décoder ce flux.
Dans une boucle, nous appelons à plusieurs reprises dec.Decode(&doc) pour décoder chaque objet JSON dans notre structure Doc. La boucle continue jusqu'à la fin du flux, moment auquel err est défini sur io.EOF.
En utilisant json.Decoder, nous pouvons analyser efficacement plusieurs objets JSON même s'ils ne sont pas mis entre parenthèses, ce qui permet nous permet de gérer un large éventail de formats de données JSON.
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!