首页  >  文章  >  后端开发  >  如何处理 Go 中的 JSON Marshal 错误?

如何处理 Go 中的 JSON Marshal 错误?

DDD
DDD原创
2024-11-01 08:34:30436浏览

How to Handle JSON Marshal Errors in Go?

Go 中的 JSON Marshal 错误处理

在 Go 中使用 json.Marshal 函数时,考虑可能触发错误的输入数据至关重要。正如官方文档中提到的,不支持循环数据结构,尝试封送它们会导致无限递归,最终导致运行时恐慌。

为了演示非恐慌错误条件,让我们创建一个程序展示了 json.Marshal 可以返回的两种类型的错误:UnsupportedTypeError 和 UnsupportedValueError。

<code class="go">package main

import (
    "encoding/json"
    "fmt"
    "math"
)

func main() {
    // UnsupportedTypeError: marshalling an invalid type (channel)

    ch := make(chan int)
    _, err := json.Marshal(ch)
    if e, ok := err.(*json.UnsupportedTypeError); ok { // Check for specific error type
        fmt.Println("UnsupportedTypeError:", e.Type)
    } else {
        fmt.Println("Error:", err)
    }

    // UnsupportedValueError: marshalling an invalid value (infinity)

    inf := math.Inf(1)
    _, err = json.Marshal(inf)
    if e, ok := err.(*json.UnsupportedValueError); ok { // Check for specific error type
        fmt.Println("UnsupportedValueError:", e.Value)
    } else {
        fmt.Println("Error:", err)
    }
}</code>

输出:

UnsupportedTypeError: chan int
UnsupportedValueError: +Inf

通过提供特定输入,该程序演示了 json.Marshal 可以返回非零错误而不引起恐慌。这使得开发人员能够在他们的应用程序中优雅地处理这些错误。

以上是如何处理 Go 中的 JSON Marshal 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn