douwaz34842
douwaz34842
2017-06-17 16:34

从JSON字符串中检索数组元素的值的最佳方法是什么

已采纳

Trying to retrieve value "default-token-k99mq" from below JSON in go program ...

const input = `{
  "kind": "ServiceAccount",
  "apiVersion": "v1",
  "metadata": {
    "name": "default",
    "namespace": "mynamespace",
    "selfLink":         "/api/v1/namespaces/mynamespace/serviceaccounts/default",
    "uid": "483d1043-4d68-11e7-be08-3a3f3b149220",
    "resourceVersion": "425039",
    "creationTimestamp": "2017-06-09T23:06:34Z"
  },
  "secrets": [
    {
      "name": "default-token-k99mq"
    }
  ]
}`

Need to get names from secrets array

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • dongmi19720408 dongmi19720408 4年前

    You can do this https://play.golang.org/p/27eKFmBCHY

    package main
    
    import (
        "fmt"
        "encoding/json"
    
    )
    
    func main() {
        const input = `{
            "kind": "ServiceAccount",
            "apiVersion": "v1",
            "metadata": {
                "name": "default",
                "namespace": "mynamespace",
                "selfLink":      "/api/v1/namespaces/mynamespace/serviceaccounts/default",
                "uid": "483d1043-4d68-11e7-be08-3a3f3b149220",
                "resourceVersion": "425039",
                "creationTimestamp": "2017-06-09T23:06:34Z"
            },
            "secrets": [
                {
                    "name": "default-token-k99mq"
                }
             ]
        }`
        type NameStruct struct {
            Name string `json:"name"`
        }
        type Secret struct {
            Secrets []NameStruct `json:"secrets"`
        }
    
        secret := Secret{}
        json.Unmarshal([]byte(input), &secret)
        fmt.Println(secret.Secrets[0].Name)
    }
    
    点赞 评论 复制链接分享