在 Go 中自定义 JSON 解析默认值
在 Go 中解析 JSON 时,为不存在的字段分配默认值可以增强数据操作。以下是如何使用encoding/json包或利用外部Go库来实现这一点。
使用encoding/json
encoding/json包提供了一个简单的解决方案。您可以使用默认值对其进行初始化,而不是将空结构传递给 json.Unmarshal。例如:
type Test struct { A string "a" B string "b" C string } example := []byte(`{"A": "1", "C": "3"}`) out := Test{} err := json.Unmarshal(example, &out) if err != nil { panic(err) } fmt.Printf("%+v", out)
利用外部库
如果encoding/json包不能完全满足你的需求,还有提供增强JSON的外部Go库解析功能。一种流行的选项是 go-json 库,它允许您使用结构标签指定缺失字段的默认值。
import ( "encoding/json" "github.com/go-json" ) type Test struct { A string `json:"a,omitempty"` B string `json:"b,omitempty"` C string `json:"c,omitempty"` } example := []byte(`{"A": "1", "C": "3"}`) out := Test{ DefaultA: "a", DefaultB: "b", DefaultC: "c", } err := json.Unmarshal(example, &out) if err != nil { panic(err) } fmt.Printf("%+v", out)
以上是如何为 Go 中缺少的 JSON 字段设置默认值?的详细内容。更多信息请关注PHP中文网其他相关文章!