Maison >développement back-end >Golang >Comment puis-je traiter efficacement de grands tableaux JSON sans les charger entièrement en mémoire dans Go ?
Lorsque vous traitez des tableaux JSON massifs stockés dans des fichiers, il est crucial d'éviter de charger l'intégralité du tableau en mémoire, car cela peut conduire à un dépassement de capacité. erreurs de mémoire. Envisagez plutôt de diffuser les données JSON élément par élément.
Une approche pour y parvenir est démontrée dans la documentation encoding/json :
package main import ( "encoding/json" "fmt" "log" "strings" ) func main() { const jsonStream = ` [ {"Name": "Ed", "Text": "Knock knock."}, {"Name": "Sam", "Text": "Who's there?"}, {"Name": "Ed", "Text": "Go fmt."}, {"Name": "Sam", "Text": "Go fmt who?"}, {"Name": "Ed", "Text": "Go fmt yourself!"} ] ` type Message struct { Name, Text string } dec := json.NewDecoder(strings.NewReader(jsonStream)) // read open bracket t, err := dec.Token() if err != nil { log.Fatal(err) } fmt.Printf("%T: %v\n", t, t) // while the array contains values for dec.More() { var m Message // decode an array value (Message) err := dec.Decode(&m) if err != nil { log.Fatal(err) } fmt.Printf("%v: %v\n", m.Name, m.Text) } // read closing bracket t, err = dec.Token() if err != nil { log.Fatal(err) } fmt.Printf("%T: %v\n", t, t) }
Dans cet exemple de code :
Cette approche vous permet de diffuser un grand tableau JSON sans charger toute la structure de données en mémoire, optimisant ainsi l'utilisation des ressources et permettant un traitement efficace.
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!