JSON解碼我需要指定類型以靈活的方式進行解碼JSON數據,這意味着類型需要在運行時被指定。與彈性類型
考慮這個片斷:http://play.golang.org/p/F-Jy4ufMPz
s := `{"b":[{"x":9},{"x":4}]}`
var a struct {
B []interface{}
}
err := json.Unmarshal([]byte(s), &a)
if err != nil {
panic(err)
}
fmt.Println(a)
將產生{[map[x:9] map[x:4]]}
。我想解碼到一個特定的(結構)類型的數組而不是[]interface{}
,而無需在編譯時指定它。
這個現象的原因可能不創建陣列前面? (返回的項目數是未知)
我現在能想到的唯一的辦法是稍後再編碼返回的地圖,並將其解碼爲指定的類型,這可能會造成不必要的處理開銷。
爲什麼不直接解碼爲JSON對象並根據需要進行分配? –
該對象非常大,並且當對象的結構已經在結構中定義時,我想避免代碼重複。 –
何時/如何知道應將哪些類型解碼爲? – ANisus