Maison > Article > développement back-end > Quand « json.Unmarshal » renvoie-t-il une erreur dans Go ?
Quand JSON Unmarshal to Structure renvoie-t-il une erreur dans Go ?
Dans Go, la fonction json.Unmarshal tente de décoder le format JSON octets dans une structure de données cible. Bien qu'il analyse et remplisse avec succès les champs avec des noms correspondants dans le JSON source, il ne génère pas d'erreur lorsque les valeurs ne correspondent pas à la structure de la cible.
Cependant, json.Unmarshal rencontrera des erreurs dans les situations suivantes :
Erreur de syntaxe :
Si l'entrée JSON est syntaxiquement incorrecte, json.Unmarshal renverra une erreur. Par exemple, s'il manque un guillemet requis, le décodeur ne parviendra pas à analyser le JSON.
type A struct { Name string `json:"name"` } data := []byte(`{"name":what?}`) err := json.Unmarshal(data, &a) fmt.Println(err) // prints character 'w' looking for beginning of value
Valeur JSON non représentable par type de cible :
Si le type d'une valeur JSON ne peut pas être converti en type du champ correspondant dans la structure cible, json.Unmarshal renverra une erreur. Par exemple, si un booléen JSON tente d'être attribué à un champ de chaîne :
data := []byte(`{"name":false}`) type B struct { Name string `json:"name"` } var b B err = json.Unmarshal(data, &b) fmt.Println(err) // prints cannot unmarshal bool into Go value of type string
Autres détails d'implémentation :
Mis à part les erreurs syntaxiques et de conversion de type, json.Unmarshal peut également renvoyer des erreurs dans d'autres situations inhabituelles. Référez-vous à la documentation Go pour une liste plus exhaustive.
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!