如何在 Go 中處理 JSON 數組
該查詢對在 Go 中解析 JSON 數組提出了挑戰。 JSON 陣列是物件的集合,在給定的範例中,從 API 呼叫傳回的資料是複雜物件的陣列。
要解析此數組,我們需要定義一個 Go 結構體來反映數組中物件的結構。讓我們先定義PublicKey 結構體:
type PublicKey struct { name string price string }
接下來,我們需要定義一個KeysResponse 結構體來表示整個PublicKey 物件陣列:
type KeysResponse struct { Collection []PublicKey }
然後我們將JSON 解組為KeysResponse類型的變數:
keys := make([]PublicKey, 0) err := json.Unmarshal([]byte(s), &keys) if err == nil { fmt.Printf("%+v\n", keys) } else { fmt.Println(err) fmt.Printf("%+v\n", keys) }
json.Unmarshal 函數會自動使用 JSON 解析的資料填入keys 變數。然而,原始問題的程式碼包含一個被忽略的細節:需要匯出 PublicKey 結構體的欄位(以大寫字母開頭)。
進行此更改後,程式碼將正確解析JSON 陣列並輸出所需格式的結果:
[{Name:Galaxy Nexus Price:3460.00} {Name:Galaxy Nexus Price:3460.00}]
請注意,問題中的JSON 文字包含帶有小寫字母的欄位名稱,但json 套件足夠智能,可以將它們與導出的匹配PublicKey 結構體的字段。
對於更複雜的 JSON 結構,建議使用結構體標籤將 JSON 欄位名稱明確對應到結構體欄位。此外,解組為映射切片 ([]map[string]interface{}) 提供了一種替代方法,但需要手動索引和類型斷言。
以上是如何將 JSON 陣列解析為 Go 結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!