Как извлечь одно значение из JSON в Голанге? - PullRequest
0 голосов
/ 13 июня 2019

мой код

func HostStats() (*host.InfoStat, error) {
   infoStat, err := host.Info()
   fmt.Printf("All Host info: ", infoStat)
   return infoStat, err
}

выход

All Host info: %!(EXTRA string= {"hostname":"UDAY-PC","uptime":536323,"bootTime":1559911444,"procs":248,"os":"windows","platform":"Microsoft Windows 10 Pro","platformFamily":"Standalone Workstation","platformVersion":"10.0.17134 Build 17134","kernelVersion":"","virtualizationSystem":"","virtualizationRole":"","hostid":"0b324295-3631-47db-b6e8-83cdba2a1af9"})

Я хочу разобрать и показать приведенное ниже значение сверху:

  1. имя хоста
  2. Платформа
  3. НомерУзла

Я пробовал и ниже имеет дополнительный код:

func HostStats() (*host.InfoStat, error) {

infoStat, err := host.Info()

type Information struct {
    Name  string
    Platform string
    HostId  string
}

var info []Information
info, err := json.Unmarshal(infoStat, &info)
if err != nil {
    fmt.Println("error:", err)
}
fmt.Printf("ok: %+v", info)

//almost every return value is a struct
fmt.Printf("All Host info: ", infoStat)
return infoStat, err
}

1 Ответ

0 голосов
/ 17 июня 2019

Как уже упоминал Адриан, у вас проблемы с вашими переменными.

В Go вы можете инициализировать переменную так же, как и вы:

var info string
// And assign a value to it by:
info = "foo"

Json распаковывается в вашу информационную переменную. Возвращаемое значение json.Unmarshal - только ошибка. Так что правильный синтаксис будет:

var info []Information
err := json.Unmarshal(infoStat, &info)

Итак, запомните различные способы инициализации переменных и присвоения значений этим переменным. Вы можете посмотреть GoDocs для переменных для получения дополнительной информации:)

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