Maison >développement back-end >Golang >Comment puis-je analyser plusieurs objets JSON dans Go, en particulier lorsqu'ils sont imbriqués ?

Comment puis-je analyser plusieurs objets JSON dans Go, en particulier lorsqu'ils sont imbriqués ?

DDD
DDDoriginal
2024-12-26 09:03:09791parcourir

How Can I Parse Multiple JSON Objects in Go, Especially When They're Nested?

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 :

  • Un json.Decoder est initialisé pour lire une chaîne contenant les données JSON.
  • Une boucle parcourt le flux, décodant chaque objet JSON dans une structure Doc.
  • Le décodage continue jusqu'à ce que io.EOF (fin de fichier) soit rencontré, indiquant la fin du flux.
  • Chaque objet décodé avec succès est imprimé.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn