Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membongkar Struktur JSON Tidak Dijangka dalam Go?

Bagaimana untuk Membongkar Struktur JSON Tidak Dijangka dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-11-25 12:11:15860semak imbas

How to Unmarshal Unexpected JSON Structures in Go?

Menyahmarshaling Data JSON dalam Format Tidak Diketahui

Apabila berhadapan dengan data JSON yang mempunyai struktur yang tidak dapat diramalkan dan kunci berubah-ubah, ia memberikan cabaran unmarshaling ia ke dalam struktur Go. Artikel ini membincangkan cara mengendalikan senario sedemikian dengan cekap.

Penyelesaian

Untuk menangani isu ini, terdapat dua pendekatan yang disyorkan:

Pendekatan 1: Menggunakan Peta

Apabila kekunci tidak diketahui, menggunakan pemboleh ubah peta[rentetan]antara muka{} ialah pilihan yang sesuai untuk menyahmarshaling muatan JSON.

var grades map[string]interface{}

err := json.Unmarshal([]byte(jsonString), &grades)

Di sini, pembolehubah peta "gred" akan mengandungi data yang tidak dikawal, dengan kekunci mewakili nama subjek yang tidak diketahui, dan nilai ialah peta yang terdiri daripada nama pelajar dan grednya.

Pendekatan 2: Mengabaikan Kekunci Tidak Diketahui dengan Tag JSON

Jika struct diutamakan, ia boleh diberi anotasi dengan tag json:"-" untuk mengabaikan medan tertentu semasa JSON marshaling dan unmarshaling. Ini membolehkan struct menyimpan data yang tidak dimarshallkan sambil mengecualikan kekunci yang tidak diketahui.

type GradeData struct {
    Grades map[string]interface{} `json:"-"`
}

var gradesData GradeData
err := json.Unmarshal([]byte(jsonString), &gradesData.Grades)

Dalam kes ini, struct "GradeData" mengandungi hanya medan "Gred", yang merupakan peta nama subjek dan pelajar gred, tetapi nama kunci asal daripada JSON tidak ada. Teg JSON memastikan bahawa medan struct sejajar dengan format output yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Membongkar Struktur JSON Tidak Dijangka dalam 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