登录
首页 >  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) // 

在 Go 操场上运行这个示例会返回{A:1 B:default b C:3}.

如您所见,json.Unmarshal(example, &out)将 JSON 解组为out,覆盖 JSON 中指定的值,但保持其他字段不变。

本篇关于《在 Go 中解析 JSON 时如何指定默认值》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表