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