Maison > développement back-end > Golang > Comment lire les fichiers JSON en tant qu'objets dans Go ?

Comment lire les fichiers JSON en tant qu'objets dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-15 00:57:02
original
324 Les gens l'ont consulté

How Do You Read JSON Files as Objects in Go?

Lecture de fichiers JSON en tant qu'objet dans Go

Dans Go, vous pouvez rencontrer des difficultés lorsque vous essayez de lire un fichier JSON et de l'analyser comme un Objet JSON.

Échec Tentatives

Certaines tentatives infructueuses de lecture de fichiers JSON en tant qu'objets incluent :

  • Tentative 1 :
plan, _ := ioutil.ReadFile(filename) // filename is the JSON file to read
var data interface{}
err := json.Unmarshal(plan, data)
Copier après la connexion

Cela entraîne l'erreur "json : Unmarshal(nil)".

  • Tentative 2 :
generatePlan, _ := json.MarshalIndent(plan, "", " ") // plan is a pointer to a struct
Copier après la connexion

Cela produit une sortie de chaîne, mais sa conversion en chaîne la rend impossible de parcourir en boucle en JSON object.

Solution

La clé pour résoudre ce problème réside dans la valeur indiquée par json.Unmarshal. Il doit s'agir d'un pointeur.

plan, _ := ioutil.ReadFile(filename)
var data interface{}
err := json.Unmarshal(plan, &data)
Copier après la connexion

Assertion de type

Lorsque vous utilisez une interface vide dans unmarshal, vous devez utiliser l'assertion de type pour obtenir les valeurs sous-jacentes en tant que Go natif types :

bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null
Copier après la connexion

Meilleur Pratique

Il est fortement recommandé d'utiliser une structure concrète pour remplir les données JSON à l'aide d'Unmarshal. Cela offre une meilleure clarté et évite le besoin d'assertions de type.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal