處理具有未知結構的JSON:解組和修改
在許多程式設計場景中,處理具有未知結構的JSON 資料可能具有挑戰性。然而,Go 提供了一個解決方案來克服這個障礙。
考慮一下你收到這樣的 JSON 字串的情況:
{ "votes": { "option_A": "3" } }
你的目標是新增一個新的「count」鍵JSON 物件的值「1」。但是,由於 JSON 結構是不可預測的,因此您無法將標準 json.Unmarshal 函數與預先定義的結構一起使用。
要解決此挑戰,您可以使用 map[string]interface{} 類型。這允許您將 JSON 解組為通用映射,其中鍵是字串,值是可以表示任何類型資料的介面。
程式碼示範如何實現此目的:
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) } raw["count"] = 1 out, err := json.Marshal(raw) if err != nil { panic(err) } fmt.Println(string(out)) }
在此程式碼中,我們將 JSON 資料解組到原始映射中。由於結構未知,因此值表示為介面。
然後我們可以透過新增一個新的鍵值對來修改映射,其中「count」為鍵,1為值。最後,我們使用 json.Marshal 將修改後的映射編組回 JSON 字串。
輸出將如預期:
{"votes":{"option_A":"3"},"count":1}
此技術提供了一種靈活的方法來處理 JSON 資料未知的結構,讓您可以根據需要修改和豐富資料。
以上是如何在Go中修改未知結構的JSON物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!