首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GOLANG中解析JSON散列数组

如何在GOLANG中解析JSON散列数组
EN

Stack Overflow用户
提问于 2017-02-06 21:26:33
回答 1查看 710关注 0票数 0

我有以下json哈希数组:

代码语言:javascript
复制
[
  {
    "name": "XXXX",
    "address": "XXXX",
    "keepalive": {
      "thresholds": {
        "warning": 30,
        "critical": 100
      },
      "handlers": [
        "XXXXX"
      ],
      "refresh": 180
    },
    "subscriptions": [
      "XXXX",
      "XXXX",
      "XXXX"
    ],
    "version": "0.17.1",
    "timestamp": 1486413490
  },
  {...}, 
  {...},
...
]

并将数组解析为:

代码语言:javascript
复制
type Client struct {
    Name string `json:"name"`
    Address string `json:"address"`
    PublicDNS string `json:"publicDNS"`
    keepalive [] string `json:"keepalive"`
    Subscriptions [] string `json:"subscriptions"`
    Version string `json:"version"`
    Timestamp int64 `json:"timestamp"`
}

type ClientResponse []Client


func getClients(body []byte) (*ClientResponse, error) {
    var s = new(ClientResponse)
    err := json.Unmarshal(body, &s)
    if(err != nil){
        fmt.Println("whoops:", err)
    }
    return s, err
}


func main() {
    res,err := http.Get("http://xxxxx:4567/clients")
    if err != nil{
        panic(err.Error())
    }

    body,err := ioutil.ReadAll(res.Body)
    if err != nil{
        panic(err.Error())
    }
    s, err := getClients([]byte(body))  
    fmt.Println(s)
}

问题:变量s,包含所有数组。那么,我如何才能获得所有数组的名称值呢?我应该做循环并得到我需要的值吗?这是最好的办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-06 21:33:06

你得绕着他们转。

代码语言:javascript
复制
names := make([]string, len(*s))
for i := range *s {
    names[i] = (*s)[i].Name
}

顺便说一句,您的解组结构是不正确的。keepalive不导出,因此不会被解封,即使是这样,它也被定义为字符串的一个片段,而JSON中的keepalive字段是一个带有thresholdshandlersrefresh字段的对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42077537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档