Je dispose d'un fichier JSON, contenant abondance de données:la structure unmarshaling JSON en aller faire des cartes vides
{"elec":{
"s20":{
"coldS":{
"wDay": {
"Night": {"avg": 1234, "stddev": 56},
"Morning": {"avg": 5432, "stddev": 10}
...
},
...
},
...
},
...
}
Je veux charger ce fichier en tant que structure de go:
type ConsumConfig struct {
elec map[string]map[string]map[string]map[string]ConsumConfValue `json:"elec"`
gas map[string]map[string]map[string]map[string]ConsumConfValue `json:"gas"`
}
type ConsumConfValue struct {
avg int `json:"avg"`
stdev int `json:"stddev"`
}
Quand je fais données de fichier unmarshaling, j'obtiens un objet de valeur zéro de mon type struct au lieu d'un objet plein de données (obtention elec
= map[]
et gas
= map[]
). Donc quand j'accède à la valeur de cette carte, j'obtiens des valeurs nulles (donc 0
car il y a des entiers).
Il n'y a aucune erreur de compilation ou d'exécution. J'essaie de trouver s'il y a eu un problème de nom de fichier ou si mon fichier contient des zéros, mais ce n'est pas le cas; il y a le fichier (qui est chargé avec succès comme un tableau d'octets), contenant des valeurs différentes de 0.
Voici mon code pour désorganiser le fichier:
func GetConsumConfig(climatFilePath string) ConsumConfig {
fileBytes, err := ioutil.ReadFile(climatFilePath) // get file as byte array
if err != nil {
panic(err)
}
var configConsum ConsumConfig
err = json.Unmarshal(fileBytes, &configConsum) // byte array as struct
if err != nil {
panic(err)
}
return configConsum
}
Et voici le test que je fais pour voir qu'il n'y a rien à l'intérieur de l'objet retourné:
fmt.Println("0...", climatFilePath)
for a, b := range returnedConfigConsum.elec {
fmt.Println(a, ": ", b)
}
fmt.Println("1...")
for a, b := range returnedConfigConsum.gas {
fmt.Println(a, ": ", b)
}
fmt.Println("2...")
Et voici l'impression juste que:
0... file/path.json
1...
2...
Au lieu de quelque chose comme
0... file/path.json
s20: map[..]
s50: map[..]
s75: map[..]
1...
s20: map[..]
s50: map[..]
s75: map[..]
2...
Oh ok, je comprends pourquoi le -1 sur ma question x) Je ne suis pas habitué à ces changements majuscules/minuscules comment fonctionnent les programmes ... Merci (je pense que je vais supprimer cette question bientôt ...); Notez que je dois aussi changer 'avg' et' stdev' en 'avg' et' Stdev' aussi (chose difficile à ne pas fonctionner en raison d'un minuscule) – NatNgs