Manejo de errores en Golang JSON Marshalling
Las estructuras de datos JSON no pueden representar referencias cíclicas y la función json.Marshal de Go no puede manejarlas. Como resultado, pasar estructuras cíclicas a Marshal genera una recursividad infinita y un pánico en el tiempo de ejecución.
Más allá de las estructuras cíclicas, json.Marshal también puede devolver errores no nulos en situaciones en las que encuentra tipos no admitidos o valores no válidos.
Tipos no admitidos
Marshal devuelve un error de tipo no admitido al intentar serializar un tipo de datos no admitido. Por ejemplo:
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
}
}
Valores no admitidos
Marshal también puede devolver un UnsupportedValueError al intentar calcular un valor no válido. Por ejemplo:
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
}
}
Al comprender estas condiciones, los desarrolladores pueden manejar los errores con elegancia y garantizar que json.Marshal devuelva los resultados esperados o maneje los errores apropiados.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3