Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengendalikan Jenis Penegasan Selepas Menyahmarshalih JSON ke dalam `antara muka{}` dalam Go?

Bagaimana untuk Mengendalikan Jenis Penegasan Selepas Menyahmarshalih JSON ke dalam `antara muka{}` dalam Go?

DDD
Lepaskan: 2024-12-16 21:29:19
asal
609 orang telah melayarinya

How to Handle Type Assertion After Unmarshaling JSON into an `interface{}` in Go?

Menyahmarshaling ke dalam Antara Muka{} dan Melaksanakan Penegasan Jenis

Apabila menerima mesej melalui sistem RabbitMQ dan melaksanakan penegasan jenis, adalah penting untuk memahami jenis yang tidak dikawal oleh json pakej.

Jenis Unmarshaling Lalai

Secara lalai, json.Unmarshal mengembalikan nilai yang berikut jenis:

  • bool
  • float64
  • rentetan
  • []antara muka{ }
  • peta[rentetan]antara muka{}
  • tiada

Menyahmarshaling ke dalam Antara Muka{}

Apabila membongkar antara muka{}, nilai yang dikembalikan akan menjadi peta generik[rentetan]antara muka{}. Untuk menentukan jenis sebenar dalam peta, anda boleh sama ada:

  • Nyahbungkus data secara manual daripada peta.
  • Nyahmarshal terus ke dalam jenis struct yang diingini.

Contoh Menggunakan Struktur Pembungkus

Untuk mengelakkan secara manual membongkar data, pertimbangkan untuk menggunakan struct pembalut seperti berikut:

type Unpacker struct {
    Data       interface{}
}

func (u *Unpacker) UnmarshalJSON(b []byte) error {
    smth1 := &Something1{}
    err := json.Unmarshal(b, smth1)
    if err == nil & smth1.Thing != "" {
        u.Data = smth1
        return nil
    }

    if _, ok := err.(*json.UnmarshalTypeError); err != nil & !ok {
        return err
    }

    smth2 := &Something2{}
    err = json.Unmarshal(b, smth2)
    if err != nil {
        return err
    }

    u.Data = smth2
    return nil
}
Salin selepas log masuk

Struktur pembalut ini membolehkan anda menyahmarshal data ke dalam sama ada Something1 atau Something2, bergantung pada jenis data yang diterima.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Jenis Penegasan Selepas Menyahmarshalih JSON ke dalam `antara muka{}` 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan