Rumah >pembangunan bahagian belakang >Golang >Bolehkah `pengekodan/json` Go Mengeluarkan Sebahagian JSON ke dalam Peta?

Bolehkah `pengekodan/json` Go Mengeluarkan Sebahagian JSON ke dalam Peta?

DDD
DDDasal
2024-12-29 04:27:13656semak imbas

Can Go's `encoding/json` Package Partially Unmarshal JSON into a Map?

Menyahkan sebahagian JSON ke dalam Peta dalam Go

Masalah:

Pertimbangkan senario di mana pelayan Go menerima data JSON yang terkandung dalam objek dengan pasangan kunci/nilai. Setiap kunci sepadan dengan jenis nilai tertentu, dan pelayan perlu menyahmarshal nilai ke dalam jenis struct yang sesuai mengikut kunci. Persoalannya, bolehkah ini dicapai menggunakan pakej "pengekodan/json"?

Penyelesaian:

Untuk mencapai ini, kita boleh menyahmarshalkan sebahagian data JSON ke dalam peta pasangan nilai kunci, dengan kuncinya adalah rentetan dan nilainya adalah contoh json.RawMessage. RawMessage mewakili data JSON yang tidak diproses, membolehkan kami menguraikannya lagi ke dalam struktur atau jenis tertentu.

Berikut ialah kod untuk ditunjukkan:

import (
    "encoding/json"
    "fmt"
)

func main() {
    data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`)

    var objmap map[string]json.RawMessage
    err := json.Unmarshal(data, &objmap)
    if err != nil {
        // Handle error
    }

    // Example: Unmarshal sendMsg value into a struct
    type sendMsg struct {
        User string
        Msg  string
    }

    var s sendMsg
    err = json.Unmarshal(objmap["sendMsg"], &s)
    if err != nil {
        // Handle error
    }
    fmt.Println(s)
}

Contoh Penggunaan:

Dalam contoh di atas, data JSON mula-mula dibongkar menjadi a peta[rentetan]json.RawMessage. Kemudian, untuk menghuraikan nilai tertentu seperti sendMsg, kami boleh menyahmarshalkan RawMessage yang sepadan ke dalam struct yang ditakrifkan dalam program.

Teknik ini membolehkan pengendalian data JSON yang fleksibel dan cekap dengan berbilang pasangan nilai kunci, di mana nilai boleh dipecahkan kepada jenis yang berbeza berdasarkan kekunci.

Atas ialah kandungan terperinci Bolehkah `pengekodan/json` Go Mengeluarkan Sebahagian JSON ke dalam Peta?. 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