Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Membuka Separa JSON ke dalam Peta Go?

Bagaimanakah Saya Boleh Membuka Separa JSON ke dalam Peta Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-26 04:28:09378semak imbas

How Can I Partially Unmarshal JSON into a Go Map?

Sebahagian JSON Unmarshal menjadi Peta dalam Go

Dalam Go, adalah mungkin untuk menyahmarshal sebahagian data JSON ke dalam peta apabila data itu dibalut dalam objek dengan kunci- pasangan nilai. Ini membolehkan pengecaman mudah jenis nilai yang dipegang oleh setiap kunci.

Pelaksanaan

Untuk mencapai ini, gunakan pakej pengekodan/json dan unmarshal ke dalam peta[string]json.RawMessage. Jenis json.RawMessage menangkap data JSON yang mendasari sebelum menghuraikan selanjutnya.

var objmap map[string]json.RawMessage
err := json.Unmarshal(data, &objmap)

Penghuraian Selanjutnya

Setelah peta diperoleh, anda boleh meneruskan untuk menghuraikan nilai setiap kunci mengikutnya jenis yang diketahui.

Untuk contoh JSON:

{
    "sendMsg":{"user":"ANisus","msg":"Trying to send a message"},
    "say":"Hello"
}

Anda boleh menghuraikan sendMsg dan sebut seperti berikut:

type sendMsg struct {
    User string
    Msg  string
}

var s sendMsg
err = json.Unmarshal(objmap["sendMsg"], &s)

var str string
err = json.Unmarshal(objmap["say"], &str)

Mengeksport Pembolehubah

Perhatikan bahawa pembolehubah dalam struct sendMsg mesti dieksport (iaitu, huruf besar) untuk unmarshaling yang betul, seperti yang ditunjukkan:

type sendMsg struct {
    User string
    Msg  string
}

Contoh

Lihat contoh yang berfungsi di sini: https://play.golang.org/p/OrIjvqIsi4-

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuka Separa JSON ke dalam Peta Go?. 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