Записать конкретные поля JSON в файл - PullRequest
0 голосов
/ 31 октября 2018

Я только начал изучать 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 голосов
/ 31 октября 2018

Согласно документации json.Marshal(...) :

В особом случае, если тег поля - "-", поле всегда опускается.

Так что вам просто нужно использовать тег "-" для любого открытого поля, которое вы не хотите сериализовать, например ( 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"}
}
0 голосов
/ 31 октября 2018

Если я правильно понял, вы бы хотели пропустить некоторые поля при сортировке в JSON. Затем используйте json:"-" в качестве тега поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...