首頁 >後端開發 >Golang >如何在 Go 中高效率地迭代巢狀 JSON 結構?

如何在 Go 中高效率地迭代巢狀 JSON 結構?

Patricia Arquette
Patricia Arquette原創
2024-11-28 18:31:11759瀏覽

How Can I Efficiently Iterate Over Nested JSON Structures in Go?

循環遍歷 Go 中的巢狀 JSON 結構

本問題探討如何在 Go 中高效地迭代巢狀 JSON 結構。考慮問題中提供的 JSON 範例。目標是從這個複雜的 JSON 結構中提取所有鍵值對。

使用類型切換和遞歸的組合,可以實現自訂函數來解析字串鍵到介面值的映射:

func parseMap(aMap map[string]interface{}) {
    for key, val := range aMap {
        switch concreteVal := val.(type) {
        case map[string]interface{}:
            fmt.Println(key)
            parseMap(val.(map[string]interface{}))
        case []interface{}:
            fmt.Println(key)
            parseArray(val.([]interface{}))
        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(val.(map[string]interface{}))
        case []interface{}:
            fmt.Println("Index:", i)
            parseArray(val.([]interface{}))
        default:
            fmt.Println("Index", i, ":", concreteVal)
        }
    }
}

透過呼叫這些函數可以遞歸地迭代JSON 結構,以所需的格式提取所有鍵值對。

以上是如何在 Go 中高效率地迭代巢狀 JSON 結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn