Bagaimana untuk Mengelakkan Ralat Penegasan Antara Muka apabila Menyahseri JSON dalam Go?

Barbara Streisand
Lepaskan: 2024-11-14 13:53:02
asal
269 orang telah melayarinya

How to Avoid Interface Assertion Errors when Deserializing JSON in Go?

Memahami Penegasan Antara Muka dalam Penyahserikatan JSON

Dalam Go, penyahserikan data JSON ke dalam struktur data tertentu kadangkala boleh membawa kepada ralat penukaran antara muka. Ini biasanya berlaku apabila cuba untuk menegaskan jenis antara muka ke dalam jenis struct yang berbeza.

Pertimbangkan contoh berikut:

type Data struct {
    Content string
    Links   []string
}
Salin selepas log masuk

Apabila menyahsiri JSON menjadi pembolehubah jenis Data, adalah penting untuk menegaskan bahawa pembolehubah antara muka (anInterface) mengandungi jenis data yang dijangkakan. Menetapkan ungkapan berikut akan menghasilkan ralat masa jalan:

AData2 = anInterface.(Data)
Salin selepas log masuk

Ralat ini berlaku kerana Go menjangkakan anInterface ialah peta[rentetan]antara muka{}, manakala ia sebenarnya mengandungi objek jenis Data. Untuk menyelesaikan masalah ini, adalah penting untuk memastikan bahawa anInterface merujuk nilai yang berstruktur serasi dengan Data.

Pendekatan Penyahserikatan Betul

Cara yang sesuai untuk menyahsiri data JSON menjadi Struktur data adalah untuk membongkar secara langsung ke dalamnya pembolehubah:

var AData2 Data

err := json.Unmarshal([]byte(value), &AData2)
if err != nil {
    panic(err)
}
Salin selepas log masuk

Dengan berbuat demikian, Go secara automatik mengendalikan penukaran antara JSON dan jenis data yang diingini, memastikan tiada ralat penegasan jenis berlaku semasa masa jalan.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat Penegasan Antara Muka apabila Menyahseri JSON 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