-3
我有一個JSON文件,其中包含大量的數據:拆封JSON結構中去作空地圖
{"elec":{
"s20":{
"coldS":{
"wDay": {
"Night": {"avg": 1234, "stddev": 56},
"Morning": {"avg": 5432, "stddev": 10}
...
},
...
},
...
},
...
}
我希望加載這個文件作爲中間人結構:
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"`
}
當我做解組文件數據,我獲得了我的結構類型的零值對象,而不是充滿數據的對象(獲取elec
= map[]
和gas
= map[]
)。所以當我訪問這些地圖的值時,我獲得了零值(因此0
因爲有整數)。
沒有編譯和執行錯誤。我試圖找出是否有文件名的問題,或者如果我的文件包含零,但它不是;有文件(即成功加載作爲一個字節數組),包含不同的值大於0
這是我的代碼來解組該文件:
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
}
這裏是測試我做,以查看有返回的對象裏的任何東西:
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...")
這是印刷只是:
0... file/path.json
1...
2...
而不是像
0... file/path.json
s20: map[..]
s50: map[..]
s75: map[..]
1...
s20: map[..]
s50: map[..]
s75: map[..]
2...
噢好吧,我明白爲什麼-1在我的問題x)我不習慣那個較低/大寫更改程序如何工作...謝謝(我想我會很快刪除這個問題...);請注意,我也必須將'avg'和'stdev'更改爲'Avg'和'Stdev'(因爲小寫而難以使用) – NatNgs