将特定的JSON字段写入文件

时间:2018-10-31 14:26:14

标签: json go

我刚刚开始研究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}, {...}]

我该怎么办?

2 个答案:

答案 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"}
}