首页 > 后端开发 > Golang > 正文

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

DDD
发布: 2024-11-01 08:34:30
原创
447 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!