Maison > développement back-end > Golang > Quand « json.Unmarshal » renvoie-t-il une erreur dans Go ?

Quand « json.Unmarshal » renvoie-t-il une erreur dans Go ?

Patricia Arquette
Libérer: 2024-11-10 11:00:03
original
462 Les gens l'ont consulté

When Does `json.Unmarshal` Return an Error in 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
Copier après la connexion

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
Copier après la connexion

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!

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