Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menghuraikan JSON Bersarang dengan Cekap dalam GoLang Menggunakan Penegasan Jenis?

Bagaimana untuk Menghuraikan JSON Bersarang dengan Cekap dalam GoLang Menggunakan Penegasan Jenis?

Patricia Arquette
Patricia Arquetteasal
2024-11-26 08:06:12470semak imbas

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

Melingkar JSON Bersarang dalam GoLang

Sesuatu keperluan wujud untuk mengekstrak pasangan nilai kunci daripada struktur JSON bersarang untuk pemprosesan dinamik. Untuk melintasi struktur ini dengan cekap, pendekatan berikut disyorkan:

Menggunakan Penegasan Jenis dengan Gelung Julat

Seperti yang disediakan dalam respons, penegasan jenis boleh digunakan untuk berulang kali mengakses dan memproses kandungan objek JSON bersarang. Kod sampel berikut menunjukkan pendekatan ini:

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"
    }
}
`

Dalam kod ini, fungsi parseMap dan parseArray secara rekursif melintasi struktur JSON bersarang, mencetak pasangan nilai kunci dalam cara hierarki. Pendekatan ini menyediakan mekanisme serba boleh untuk mengakses dan memproses data daripada JSON tanpa mengira kerumitannya.

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan JSON Bersarang dengan Cekap dalam GoLang Menggunakan Penegasan Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn