在 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库提供类似的功能。考虑以下内容:
以上是Go中解析JSON时如何设置默认值?的详细内容。更多信息请关注PHP中文网其他相关文章!