首页 > 后端开发 > Golang > 如何使用类型断言高效解析 GoLang 中的嵌套 JSON?

如何使用类型断言高效解析 GoLang 中的嵌套 JSON?

Patricia Arquette
发布: 2024-11-26 08:06:12
原创
460 人浏览过

How to Efficiently Parse Nested JSON in GoLang Using Type Assertion?

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板