在Go中迭代json数组以提取值

时间:2015-07-23 20:34:04

标签: json go unmarshalling

我的json数组中有以下内容(conf.json文件)。

{
  "Repos": [
      "a",
      "b",
      "c"
  ]
}

我试图读取这个json然后迭代它但是卡住了。我很新(去编程),所以我很难理解这里发生了什么。

import (
    "encoding/json"
    "fmt"
    "os"
)

type Configuration struct {
    Repos []string
}

func read_config() {
    file, _ := os.Open("conf.json")
    decoder := json.NewDecoder(file)
    configuration := Configuration{}
    err := decoder.Decode(&configuration)
    if err != nil {
        fmt.Println("error:", err)
    }

    fmt.Println(configuration.Repos)
}

到目前为止,这是我能够得到的。这将打印好的值[a, b, c]

我想要做的是能够迭代数组并单独拆分每个值但是没有运气这样做。我采取了错误的做法吗?有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

你的意思是这样的:

for _, repo := range configuration.Repos {
    fmt.Println(repo)
}

请注意,示例中的代码不适用于您提供的JSON。 valueRepos之间没有映射。您要么在Configuration结构上发布了错误的JSON或省略了标记,要正确映射它。

答案 1 :(得分:0)

一切都很好,只是你的印刷没有达到预期的效果。由于Repos是一个数组,您必须迭代它以单独打印每个值。试试这样的事情;

for _, repo := range configuration.Repos {
    fmt.Println(repo)
}