首頁 >後端開發 >Golang >如何在 Go 中解析動態 JSON 鍵並提取特定欄位?

如何在 Go 中解析動態 JSON 鍵並提取特定欄位?

Susan Sarandon
Susan Sarandon原創
2025-01-04 04:54:40128瀏覽

How to Parse Dynamic JSON Keys and Extract Specific Fields in Go?

Golang 中的動態 JSON 鍵解析

在 JSON 解析領域,有時會遇到 JSON 字串頂層動態鍵的挑戰。假設我們有以下 JSON:

j := `{"bvu62fu6dq": {
           "name": "john",
           "age": 23,
           "xyz": "weu33s"
           .....
           .....}
      }`

任務是從該 JSON 中提取「name」和「age」的值,但鍵「bvu62fu6dq」是動態的,並且因情況而異。

一種方法是定義一個容納此動態鍵結構的結構:

type Info struct {
   UniqueID map[string]string
 }

但是,這結構在處理「姓名」和「年齡」的實際提取方面面臨挑戰。

為了有效解析這個動態 JSON 結構,我們可以利用 Golang 中「encoding/json」套件的強大功能。這是一個解決方案:

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

type Info map[string]Person

此設定採用更靈活的方法,透過使用由動態頂級金鑰(例如「bvu62fu6dq」)作為金鑰的對應。 「Person」結構封裝了我們試圖從每個動態子物件中提取的資料(例如「name」和「age」)。

透過此設置,解碼JSON 並提取特定值變得簡單:

var info Info

err := json.Unmarshal([]byte(j), &info)
if err != nil {
    // Handle error
}

fmt.Printf("%s: %d\n", info["bvu62fu6dq"].Name, info["bvu62fu6dq"].Age)

這個全面的解決方案不僅可以處理動態頂級JSON 鍵,還支援提取特定字段(例如“姓名”和“年齡”)來自每個子對象。

以上是如何在 Go 中解析動態 JSON 鍵並提取特定欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn