Read a slice from a json file in golang

14,266

For example,

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
)

func main() {
    data, err := ioutil.ReadFile("data.json")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Print("data:  ",string(data))
    var slice []string
    err = json.Unmarshal(data, &slice)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("slice: %q\n",slice)
}

Output:

$ cat data.json
["a","b","c","d"]
$ go run data.go
data:  ["a","b","c","d"]
slice: ["a" "b" "c" "d"]
$
Share:
14,266

Related videos on Youtube

XXX
Author by

XXX

Updated on June 04, 2022

Comments

  • XXX
    XXX over 1 year

    How do I read a slice from a json file in golang? For example, the file data.json looks like this:

    ["a","b","c","d"]

    I have tried using ioutil.ReadFile to do this, but this returns a string, not a slice. How can I read my slice?
    NOTE: You can sub the brackets [] for braces {}
    I have done this using structs, but I don't want the user to have to type in this complicated json stuff

    • XXX
      XXX over 7 years
      It doesn't have to be json. I just want it to work :)
    • XXX
      XXX over 7 years
      Fixed it! Is it good now?
  • OneOfOne
    OneOfOne over 7 years
    You probably should mention using json.NewDecoder if the file is large since it'd be more efficient.