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

Comment puis-je analyser efficacement plusieurs objets JSON consécutifs dans Go ?

DDD
DDDoriginal
2024-12-23 05:08:14450parcourir

How Can I Efficiently Parse Multiple Consecutive JSON Objects in Go?

Analyse de plusieurs objets JSON dans Go

Lorsque vous rencontrez plusieurs objets JSON, tels que ceux renvoyés par les serveurs au format :

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

l'analyse peut s'avérer difficile. L'extrait de code suivant montre les difficultés rencontrées lors de l'utilisation de chaînes. Remplacer :

correct_format := strings.Replace(string(resp_body), "}{", "},{", -1)
json_output := "[" + correct_format + "]"

Une solution alternative consiste à utiliser un json.Decoder pour un décodage efficace :

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 approche garantit une analyse réussie. de plusieurs objets JSON, même dans des scénarios tels que les données Common Crawl.

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