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 :
plan, _ := ioutil.ReadFile(filename) // filename is the JSON file to read var data interface{} err := json.Unmarshal(plan, data)
Cela entraîne l'erreur "json : Unmarshal(nil)".
generatePlan, _ := json.MarshalIndent(plan, "", " ") // plan is a pointer to a struct
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)
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
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!