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écursivité 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 marshalage d'un type de données non pris en charge. Par exemple :
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
}
}
Valeurs non prises en charge
Marshal peut également renvoyer une UnsupportedValueError lorsqu'il tente de rassembler une valeur non valide. Par exemple :
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
}
}
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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3