我刚刚开始研究Golang,不了解如何仅将特定的JSON字段写入输出文件。
例如,我有这个结构:
type example struct {
Ifindex int `json:"ifindex"`
HostID int `json:"host_id"`
Hostname string `json:"hostname"`
Name string `json:"name"`
}
我的输出文件应采用以下格式:
[{"Ifindex": int, "Hostname": string}, {...}]
我该怎么办?
答案 0 :(得分:3)
如果我理解正确,则在编组为JSON时您想省略一些字段。然后使用json:"-"
作为字段标签。
答案 1 :(得分:3)
根据json.Marshal(...)
documentation:
在特殊情况下,如果字段标记为“-”,则始终会省略该字段。
因此,您只需要对不需要序列化的任何公共字段使用标签"-"
,例如(Go Playground):
type Example struct {
Ifindex int `json:"ifindex"`
HostID int `json:"-"`
Hostname string `json:"hostname"`
Name string `json:"-"`
}
func main() {
eg := Example{Ifindex: 1, HostID: 2, Hostname: "foo", Name: "bar"}
bs, err := json.Marshal(&eg)
if err != nil {
panic(err)
}
fmt.Println(string(bs))
// {"ifindex":1,"hostname":"foo"}
}