J'essaie d'analyser un fichier qui contient des données JSON:
[
{"a" : "1"},
{"b" : "2"},
{"c" : "3"}
]
Comme il s'agit d'un tableau JSON avec des clés dynamiques, j'ai pensé que je pouvais utiliser:
type data map[string]string
Cependant, je ne peux pas analyser le fichier en utilisant un map
:
c, _ := ioutil.ReadFile("c")
dec := json.NewDecoder(bytes.NewReader(c))
var d data
dec.Decode(&d)
json: cannot unmarshal array into Go value of type main.data
Quelle serait la façon la plus simple d'analyser un fichier contenant des données JSON est un tableau (uniquement des types chaîne à chaîne) dans une structure Go?
EDIT: Pour approfondir la réponse acceptée - il est vrai que mon JSON est un tableau de cartes. Pour que mon code fonctionne, le fichier doit contenir:
{
"a":"1",
"b":"2",
"c":"3"
}
Ensuite, il peut être lu dans un map[string]string
C'est parce que votre json est en fait un tableau de cartes, mais vous essayez de démasquer juste un map
. Essayez d'utiliser les éléments suivants:
type YourJson struct {
YourSample []struct {
data map[string]string
}
}
Essayez ceci: http://play.golang.org/p/8nkpAbRzAD
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
)
type mytype []map[string]string
func main() {
var data mytype
file, err := ioutil.ReadFile("test.json")
if err != nil {
log.Fatal(err)
}
err = json.Unmarshal(file, &data)
if err != nil {
log.Fatal(err)
}
fmt.Println(data)
}
vous pouvez essayer le package simplejson du bitly
https://github.com/bitly/go-simplejson
c'est beaucoup plus facile.