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

Quand « json.Unmarshal » génère-t-il une erreur dans Go ?

Patricia Arquette
Libérer: 2024-11-19 12:47:02
original
536 Les gens l'ont consulté

When Does `json.Unmarshal` Throw an Error in Go?

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

Dans Go, la fonction json.Unmarshal analyse une chaîne JSON dans une structure , mais cela ne renvoie pas toujours une erreur. Cependant, il renvoie des erreurs dans certaines situations.

Quand il ne renvoie aucune erreur

Le décodeur JSON ne signale généralement pas d'erreur lorsque les valeurs de la source ne le font pas. ne correspondent pas à ceux de la cible. Par exemple, si la source contient un champ nommé « statut » mais que la cible ne le fait pas, aucune erreur n'est générée.

Cas d'erreur

json.Unmarshal renvoie erreurs dans les scénarios suivants :

  • Erreurs de syntaxe : Si la chaîne JSON est mal formé, comme des guillemets ou des signes de ponctuation manquants.
  • Valeur JSON non représentable par le type cible : Si une valeur JSON ne peut pas être convertie en type de champ correspondant dans la structure cible. Par exemple, essayer de désorganiser une valeur booléenne dans un champ de chaîne.

Exemple de cas d'erreur

type A struct {
    Name string `json:"name"`
}

var jsonString string = `{ "status": "false" }'`
var a A
error := json.Unmarshal([]byte(jsonString), &a)

fmt.Println(err) // prints cannot unmarshal bool into Go value of type string
Copier après la connexion

Dans cet exemple, une erreur est générée car le JSON source a un champ "statut" qui est de type booléen, mais la structure cible n'a pas de booléen correspondant champ.

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!

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