"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como você lida com erros durante o JSON Marshalling em Golang?

Como você lida com erros durante o JSON Marshalling em Golang?

Publicado em 2024-11-12
Navegar:738

How do you Handle Errors During JSON Marshalling in Golang?

Manipulação de erros no Golang JSON Marshalling

As estruturas de dados JSON não podem representar referências cíclicas e a função json.Marshal de Go não pode lidar com elas. Como resultado, passar estruturas cíclicas para Marshal leva a uma recursão infinita e a um pânico no tempo de execução.

Além das estruturas cíclicas, json.Marshal também pode retornar erros não nulos em situações em que encontra tipos não suportados ou valores inválidos.

Tipos não suportados

Marshal retorna um UnsupportedTypeError ao tentar empacotar um tipo de dados não suportado. Por exemplo:

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
    }
}

Unsupported Values

Marshal também pode retornar um UnsupportedValueError ao tentar empacotar um valor inválido. Por exemplo:

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
    }
}

Ao compreender essas condições, os desenvolvedores podem lidar com erros normalmente e garantir que json.Marshal retorne os resultados esperados ou trate os erros apropriados.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3