首頁 > 後端開發 > Golang > 主體

如何將 JSON 陣列解析為 Go 結構?

Susan Sarandon
發布: 2024-11-26 18:01:15
原創
854 人瀏覽過

How to Parse JSON Arrays into Go Structs?

如何在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板