登录
首页 >  Golang >  Go问答

如何在Golang中从json中提取单个值?

来源:stackoverflow

时间:2024-04-10 22:09:38 105浏览 收藏

本篇文章给大家分享《如何在Golang中从json中提取单个值?》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

我的代码

func hoststats() (*host.infostat, error) {
   infostat, err := host.info()
   fmt.printf("all host info: ", infostat)
   return infostat, err
}

输出

所有主机信息: %!(extra string= {"hostname":"uday-pc","uptime":536323,"boottime":1559911444,"procs":248,"os":"windows", “platform”:“microsoft windows 10 pro”,“platformfamily”:“独立工作站”,“platformversion”:“10.0.17134 build 17134”,“kernelversion”:“”,“virtualizationsystem”:“”,“virtualizationrole”: "","hostid":"0b324295-3631-47db-b6e8-83cdba2a1af9"})

我想解析并显示上面的以下值:

  1. 主机名
  2. 平台
  3. 主机id

我尝试过,下面有附加代码:

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
}

解决方案


正如 adrian 上面提到的,您的变量存在问题。

在 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 for Variables 了解更多信息:)

到这里,我们也就讲完了《如何在Golang中从json中提取单个值?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>