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
Patricia Arquetteoriginal
2024-11-19 12:47:02525parcourir

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

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:
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