Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menghuraikan JSON dengan Cekap dengan Pelbagai Jenis Mesej dalam Go?

Bagaimana untuk Menghuraikan JSON dengan Cekap dengan Pelbagai Jenis Mesej dalam Go?

Barbara Streisand
Lepaskan: 2024-12-21 12:02:11
asal
125 orang telah melayarinya

How to Efficiently Parse JSON with Multiple Message Types in Go?

Menghuraikan JSON dalam Golang tanpa Menyahmarshaling Berlebihan

Apabila berurusan dengan data JSON yang mengandungi jenis mesej yang berbeza, unmarshaling terus ke dalam jenis struct yang diketahui mungkin tidak boleh dilaksanakan. Sebaliknya, proses dua langkah boleh digunakan untuk menyelesaikan isu ini.

Langkah 1: Unmarshal menjadi Peta Generik

Nyahmarshal objek JSON ke dalam peta generik[ string]antara muka{} untuk mendapatkan semula kunci dan nilai peringkat teratas.

Langkah 2: Kenal pasti dan Nyahmarshal Kunci Khusus

Lelaran melalui peta dan kenal pasti kunci yang sepadan dengan jenis mesej yang diingini. Contohnya:

switch k {
case "ping":
    // ...
case "ack":
    // ...
}
Salin selepas log masuk

Untuk setiap kunci yang dikenal pasti, nyahmarshal nilai yang sepadan ke dalam json.RawMessage dan bukannya antara muka{}:

var myAck json.RawMessage
Salin selepas log masuk

Langkah 3: Nyahmarshal ke dalam Struktur Khusus

Akhir sekali, untuk menukar RawMessage kepada yang dikehendaki struct, unmarshal terus tanpa memerlukan proses marshal/unmarshal perantaraan:

err = json.Unmarshal(myAck, &myAck)
Salin selepas log masuk

Dengan menyahmarshal sebahagiannya ke dalam RawMessage dan mengelakkan unmarshaling berlebihan, pendekatan ini memudahkan proses dan meningkatkan kecekapan apabila menghuraikan data JSON yang kompleks.

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

sumber:php.cn
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