Gestion des erreurs dans Golang JSON Marshalling
Les structures de données JSON ne peuvent pas représenter les références cycliques et la fonction json.Marshal de Go ne peut pas les gérer. En conséquence, transmettre des structures cycliques à Marshal entraîne une récursion infinie et une panique d'exécution.
Au-delà des structures cycliques, json.Marshal peut également renvoyer des erreurs non nulles dans les situations où il rencontre des types non pris en charge ou des valeurs non valides.
Types non pris en charge
Marshal renvoie une erreur UnsupportedTypeError lors de la tentative de marshaler un type de données non pris en charge. Par exemple :
<code class="go">import "encoding/json" func main() { ch := make(chan int) _, err := json.Marshal(ch) if _, ok := err.(*json.UnsupportedTypeError); ok { // Error: Unmarshal: unsupported type: chan int } }</code>
Valeurs non prises en charge
Marshal peut également renvoyer une UnsupportedValueError lorsqu'il tente de rassembler une valeur non valide. Par exemple :
<code class="go">import ( "encoding/json" "math" ) func main() { positiveInfinity := math.Inf(1) _, err := json.Marshal(positiveInfinity) if _, ok := err.(*json.UnsupportedValueError); ok { // Error: json: unsupported value: +Inf } }</code>
En comprenant ces conditions, les développeurs peuvent gérer les erreurs avec élégance et s'assurer que json.Marshal renvoie les résultats attendus ou gère les erreurs appropriées.
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!