用未知結構解碼JSON
在程式設計領域,JSON(JavaScript 物件表示法)通常用作表示資料的一種手段軟體應用程式.然而,當遇到結構不熟悉的 JSON 時,提取特定資訊可能會帶來挑戰。考慮以下場景:
您需要像這樣處理JSON 字串:
{ "votes": { "option_A": "3" } }
您的目標是透過包含「count」鍵來擴充此JSON,從而產生以下輸出:
{ "votes": { "option_A": "3" }, "count": "1" }
挑戰來自於初始JSON 的未知結構。傳統方法,例如使用具有特定類型結構的 json.Unmarshal 函數,變得不適用。
解決方案:Unmarshal 到 Map
為了克服這個障礙,我們可以利用 Go 映射的靈活性。以下程式碼片段示範如何將JSON 解組到map[string]interface{}:
package main import ( "encoding/json" "fmt" ) func main() { in := []byte(`{ "votes": { "option_A": "3" } }`) var raw map[string]interface{} if err := json.Unmarshal(in, &raw); err != nil { panic(err) } // Modify the map by adding the "count" key raw["count"] = 1 // Marshal the modified map back to JSON out, err := json.Marshal(raw) if err != nil { panic(err) } fmt.Println(string(out)) }
透過將JSON 解組到映射中,我們有效地創建了一個與類型無關的資料結構,可容納任何輸入。它允許我們動態地存取和修改 JSON 內容,而不需要依賴預先定義的類型。
上述程式碼的最終輸出如下:
{ "votes": { "option_A": "3" }, "count": "1" }
這種方法提供了一種方便靈活的方式用於解碼未知結構的JSON 的解決方案,使開發人員能夠高效地提取和操作資料。
以上是如何在 Go 中解碼未知結構的 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!