Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menghuraikan Struktur JSON Kompleks dengan Berkesan dalam Go Menggunakan `json.Unmarshal`?

Bagaimana untuk Menghuraikan Struktur JSON Kompleks dengan Berkesan dalam Go Menggunakan `json.Unmarshal`?

Barbara Streisand
Lepaskan: 2025-01-03 13:41:43
asal
864 orang telah melayarinya

How to Effectively Parse Complex JSON Structures in Go Using `json.Unmarshal`?

Cara Menghuraikan JSON Kompleks dengan Go Unmarshal: Membongkar Kerja Dalaman

Pakej pengekodan/json dalam Go menawarkan json.Unmarshal berfungsi untuk memudahkan tugas penghuraian JSON. Walau bagaimanapun, menghadapi struktur JSON yang kompleks boleh terbukti mencabar.

Menyahkod ke Antara Muka{}

Untuk data JSON yang tidak diketahui, seseorang boleh menyahkodnya menjadi antara muka{} menggunakan Unmarshal . Pendekatan ini menghasilkan nilai peta[rentetan]antara muka{} dengan kunci ialah rentetan dan nilai ialah jenis antara muka{}.

Sebagai contoh, pertimbangkan JSON berikut:

{
     "k1" : "v1", 
     "k2" : "v2", 
     "k3" : 10, 
     "result" : [
                 [
                 ["v4", v5, {"k11" : "v11", "k22" : "v22"}]
                 , ... , 
                 ["v4", v5, {"k33" : "v33", "k44" : "v44"}
                 ]
                 ], 
                 "v3"
                ] 
}
Salin selepas log masuk

The Go kod untuk menyahkod dan mengakses data ini:

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    b := []byte(`{
       "k1" : "v1", 
       "k3" : 10,
       result:["v4",12.3,{"k11" : "v11", "k22" : "v22"}]
    }`)
    var f interface{}
    err := json.Unmarshal(b, &f)
    if err != nil {
        fmt.Println(err)
        return
    }
    m := f.(map[string]interface{})
    for k, v := range m {
        switch vv := v.(type) {
        case string:
            fmt.Println(k, "is string", vv)
        case int:
            fmt.Println(k, "is int", vv)
        case []interface{}:
            fmt.Println(k, "is an array:")
            for i, u := range vv {
                fmt.Println(i, u)
            }
        default:
            fmt.Println(k, "is of a type I don't know how to handle")
        }
    }
}
Salin selepas log masuk

Dengan menegaskan jenis antara muka dan menggunakan suis jenis, adalah mungkin untuk navigasi

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Struktur JSON Kompleks dengan Berkesan dalam Go Menggunakan `json.Unmarshal`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan