在 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中文网其他相关文章!