Maison >développement back-end >Golang >Comment analyser efficacement plusieurs objets JSON dans Go ?

Comment analyser efficacement plusieurs objets JSON dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-22 02:56:12183parcourir

How to Efficiently Parse Multiple JSON Objects in Go?

Analyse de plusieurs objets JSON dans Go

L'analyse JSON dans Go est simplifiée à l'aide du package encoding/json. Bien qu'il gère sans effort des tableaux d'objets JSON, le défi se pose lors de l'analyse des réponses JSON avec plusieurs objets, tels que :

{"something":"foo"}
{"something-else":"bar"}

Le code fourni tente de transformer manuellement l'entrée en remplaçant les occurrences }{ par }, {, mais cette approche est inefficace.

Pour résoudre ce problème, une solution plus robuste utilisant un json.Decoder est nécessaire. L'approche consiste à :

  1. Créer un objet json.Decoder à partir de l'entrée.
  2. Itérer sur l'entrée à l'aide de la méthode Decode du décodeur.
  3. Désérialiser chaque JSON objet dans une structure personnalisée (par exemple, Doc).

Voici un exemple d'implémentation :

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)
    }
}

Cette solution gère avec élégance plusieurs objets JSON dans l'entrée, garantissant leur analyse et leur désérialisation précises.

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