2016-03-20 7 views
0

golangのjsonファイルからスライスを読み取るにはどうすればよいですか?golangのjsonファイルからスライスを読み取る

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

私はこれを行うにはioutil.ReadFileを使用して試してみましたが、これは文字列ではなく、スライスを返します。たとえば、ファイルdata.jsonは次のようになります。私のスライスを読むには?
NOTE:あなたが、私は構造体を使用してこれを行っているが、私は、ユーザーがたとえば、この複雑なJSONのもの

+0

それはJSONである必要はありません。私はそれが働くようにしたい:) – XXX

+0

それを修正しました!今はいいですか? – XXX

答えて

4

を入力する必要がありますする必要はありません括弧{}
用ブラケット[]をサブすることができ、

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) 
} 

出力:

$ cat data.json 
["a","b","c","d"] 
$ go run data.go 
data: ["a","b","c","d"] 
slice: ["a" "b" "c" "d"] 
$ 
+1

もっと効率的なので、ファイルが大きい場合は 'json.NewDecoder'を使って言及してください。 – OneOfOne

関連する問題