使用 Go Unmarshal 解析複雜的 JSON
在 Go 中,encoding/json 套件提供了 json.Unmarshal 函數來解析 JSON 資料。可以將這些資料解組為預先定義的結構或介面{}類型,以迭代意外的資料結構。然而,解析複雜的 JSON 可能具有挑戰性。
例如,考慮以下JSON:
{ "k1": "v1", "k2": "v2", "k3": 10, "result": [ [ ["v4", "v5", {"k11": "v11", "k22": "v22"}], ... ["v4", "v5", {"k33": "v33", "k44": "v44"}] ], "v3" ] }
要使用json.Unmarshal 解析此JSON,我們可以建立一個interface{} 變數並將解析結果儲存在其中:
type MyData struct { v1 string v2 string v3 int result [][]MySubData result2 string } type MySubData struct { v1 string v2 string result map[string]string } var f interface{} err := json.Unmarshal(b, &f)
解組後,f變數將是一個帶有字串鍵和空介面的映射價值。為了存取這些數據,我們使用類型斷言將f 轉換為map[string]interface{} 並迭代它:
m := f.(map[string]interface{}) for k, v := range m { switch vv := v.(type) { case string: // Handle string values case int: // Handle integer values case []interface{}: // Handle array values default: // Handle unknown types } }
這種方法允許我們在維護類型的同時處理意外的JSON 資料結構安全。更多詳細信息,請參閱 JSON 和 Go 的原始文章。
以上是如何使用 Go 的 json.Unmarshal 有效解析複雜的 JSON 結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!