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