使用 Go 的 Unmarshal 解析複雜的 JSON
encoding/json 套件提供了 json.Unmarshal 函數來解析 JSONSON。此函數可用於將 JSON 字串解組為預先定義的結構或 interface{} 值。
在處理可能包含巢狀數組和物件的複雜 JSON 結構時,使用 interface{} 允許開發人員處理不可預見的情況資料結構。例如,考慮以下JSON:
{ "k1": "v1", "k2": "v2", "k3": 10, "result": [ [ ["v4", "v5", {"k11": "v11", "k22": "v22"}], ... ], "v3" ] }
要解析此JSON,我們可以使用以下程式碼片段:
import ( "encoding/json" "fmt" ) func main() { b := []byte(`{ "k1" : "v1", "k2" : "v2", "k3" : 10, "result" : [ [ ["v4", v5, {"k11" : "v11", "k22" : "v22"}] , ... , ["v4", v5, {"k33" : "v33", "k44" : "v44"} ] ], "v3" ] }`) var f interface{} err := json.Unmarshal(b, &f) if err != nil { fmt.Println("Error:", err) } // Access the data in the interface{} value m := f.(map[string]interface{}) fmt.Println("k1:", m["k1"]) fmt.Println("k3:", m["k3"]) for _, v := range m["result"].([]interface{}) { fmt.Println("Element:", v) } }
透過迭代映射並使用類型開關,我們可以使用正確的類型訪問值。這種方法使我們能夠以靈活且類型安全的方式處理未知的 JSON 結構。
以上是如何使用 json.Unmarshal 高效解析 Go 中的複雜 JSON 結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!