"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se manejan los errores durante la clasificación JSON en Golang?

¿Cómo se manejan los errores durante la clasificación JSON en Golang?

Publicado el 2024-11-12
Navegar:793

How do you Handle Errors During JSON Marshalling in Golang?

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.

Último tutorial Más>

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