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
Libérer: 2024-12-26 09:03:09
original
789 Les gens l'ont consulté

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"}
Copier après la connexion

Utilisation du code suivant pour analyser ces données :

correct_format := strings.Replace(string(resp_body), "}{", "},{", -1)
json_output := "[" + correct_format + "]"
Copier après la connexion

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)
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal