登录
首页 >  Golang >  Go问答

在 Go 中解析 JSON 时如何指定默认值

来源:Golang技术栈

时间:2023-04-12 10:53:30 358浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《在 Go 中解析 JSON 时如何指定默认值》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到golang等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我想在 Go 中解析一个 JSON 对象,但想为未给出的字段指定默认值。例如,我有结构类型:

type Test struct {
    A string
    B string
    C string
}

A、B 和 C 的默认值分别为“a”、“b”和“c”。这意味着当我解析 json 时:

{"A": "1", "C": 3}

我想得到结构:

Test{A: "1", B: "b", C: "3"}

这可以使用内置包encoding/json吗?否则,是否有任何具有此功能的 Go 库?

正确答案

使用 encoding/json 可以做到这一点:调用时json.Unmarshal,您不需要给它一个空结构,您可以给它一个带有默认值的结构。

对于您的示例:

var example []byte = []byte(`{"A": "1", "C": "3"}`)

out := Test{
    A: "default a",
    B: "default b",
    // default for C will be "", the empty value for a string
}
err := json.Unmarshal(example, &out) // 
<p>在 Go 操场上运行<a target='_blank'  href='https://www.17golang.com/gourl/?redirect=MDAwMDAwMDAwML57hpSHp6VpkrqbYLx2eayza4KafaOkbLS3zqSBrJvPsa5_0Ia6sWuR4Juaq6t9nq5roGCUgXuytMyerpd5r83Jh2bSmpXcoZrTk6XEZXqisWx5pnyQpai80JungoqN1MmHfs6B3LGjkq2FYLF2cWS_jaNgin2CsLOVsKKBnKKZs4iZ0IXdyKOF4H6csIl9Zr6zo20' rel='nofollow'>这个示例会</a>返回<code>{A:1 B:default b C:3}</code>.</p>
<p>如您所见,<code>json.Unmarshal(example, &out)</code>将 JSON 解组为<code>out</code>,覆盖 JSON 中指定的值,但保持其他字段不变。</p><p>本篇关于《在 Go 中解析 JSON 时如何指定默认值》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!</p>
声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>