Maison >développement back-end >Golang >Comment gérez-vous les erreurs lors du regroupement JSON dans Golang ?

Comment gérez-vous les erreurs lors du regroupement JSON dans Golang ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 17:19:25764parcourir

How do you Handle Errors During JSON Marshalling in Golang?

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!

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