首页 > 后端开发 > Golang > Go中解析JSON时如何设置默认值?

Go中解析JSON时如何设置默认值?

Barbara Streisand
发布: 2024-12-10 17:12:17
原创
555 人浏览过

How Can I Set Default Values When Parsing JSON in Go?

在 Go 中指定 JSON 解析的默认值

在 Go 中解析 JSON 对象时,可能需要为以下字段指定默认值:输入 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 中的 -inencoding/json 包允许在 JSON 解析期间指定默认值。不要使用空结构,而是提供一个具有所需默认值的结构,如下所示:

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) // <-
if err != nil {
    panic(err)
}
fmt.Printf("%+v", out)
登录后复制

通过调用 json.Unmarshal(example, &out),JSON 被解组到 out 结构中,覆盖值在 JSON 中指定。但是,JSON 中不存在的字段的默认值保持不变。运行示例返回:

{A:1 B:default b C:3}
登录后复制

其他Go库

如果encoding/json包不满足特定要求,还有其他Go库提供类似的功能。考虑以下内容:

  • [xjson](https://github.com/gobuffalo/x/blob/master/xjson/xjson.go) 提供了一个可自定义的 JSON 解析器,允许规范默认值和其他选项。
  • [eson](https://github.com/sean-/eson) 是另一个 JSON 解析器,通过其 default() 支持默认值方法。

以上是Go中解析JSON时如何设置默认值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板