在 GoLang 中循環巢狀 JSON
需要從巢狀 JSON 結構中擷取鍵值對以進行動態處理。為了有效地遍歷此結構,建議使用以下方法:
在範圍循環中使用類型斷言
根據回應中提供的,可以使用類型斷言迭代存取和處理嵌套JSON 物件的內容。以下範例程式碼示範了這種方法:
package main import ( "encoding/json" "fmt" ) func main() { // Create a map for the JSON data m := map[string]interface{}{} // Unmarshal the JSON input into the map err := json.Unmarshal([]byte(input), &m) if err != nil { panic(err) } // Recursively parse the map parseMap(m) } func parseMap(aMap map[string]interface{}) { for key, val := range aMap { switch concreteVal := val.(type) { case map[string]interface{}: fmt.Println(key) parseMap(concreteVal) case []interface{}: fmt.Println(key) parseArray(concreteVal) default: fmt.Println(key, ":", concreteVal) } } } func parseArray(anArray []interface{}) { for i, val := range anArray { switch concreteVal := val.(type) { case map[string]interface{}: fmt.Println("Index:", i) parseMap(concreteVal) case []interface{}: fmt.Println("Index:", i) parseArray(concreteVal) default: fmt.Println("Index", i, ":", concreteVal) } } } const input = ` { "outterJSON": { "innerJSON1": { "value1": 10, "value2": 22, "InnerInnerArray": [ "test1" , "test2"], "InnerInnerJSONArray": [{"fld1" : "val1"} , {"fld2" : "val2"}] }, "InnerJSON2":"NoneValue" } } `
在此程式碼中,parseMap 和 parseArray 函數遞歸遍歷巢狀的 JSON 結構,以分層方式列印鍵值對。這種方法提供了一種通用的機制來存取和處理 JSON 數據,無論其複雜性如何。
以上是如何使用型別斷言高效解析 GoLang 中的巢狀 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!