Mengendalikan JSON dengan Struktur Tidak Diketahui: Menyahmarshaling dan Pengubahsuaian
Dalam banyak senario pengaturcaraan, berurusan dengan data JSON dengan struktur yang tidak diketahui boleh mencabar. Walau bagaimanapun, Go menyediakan penyelesaian untuk mengatasi halangan ini.
Pertimbangkan situasi di mana anda menerima rentetan JSON seperti ini:
{ "votes": { "option_A": "3" } }
Matlamat anda ialah menambah kunci "kira" baharu dengan nilai "1" kepada objek JSON. Walau bagaimanapun, memandangkan struktur JSON tidak dapat diramalkan, anda tidak boleh menggunakan fungsi json.Unmarshal standard dengan struct yang dipratentukan.
Untuk menangani cabaran ini, anda boleh menggunakan jenis peta[rentetan]antara muka{}. Ini membolehkan anda menyahmarshal JSON ke dalam peta generik, dengan kunci ialah rentetan dan nilai ialah antara muka yang boleh mewakili sebarang jenis data.
Kod menunjukkan cara untuk mencapai ini:
package main import ( "encoding/json" "fmt" ) func main() { in := []byte(`{ "votes": { "option_A": "3" } }`) var raw map[string]interface{} if err := json.Unmarshal(in, &raw); err != nil { panic(err) } raw["count"] = 1 out, err := json.Marshal(raw) if err != nil { panic(err) } fmt.Println(string(out)) }
Dalam kod ini, kami menyahmarshal data JSON ke dalam peta mentah. Memandangkan struktur tidak diketahui, nilai diwakili sebagai antara muka.
Kami kemudiannya boleh mengubah suai peta dengan menambahkan pasangan nilai kunci baharu dengan "kira" sebagai kunci dan 1 sebagai nilai. Akhir sekali, kami menyusun semula peta yang diubah suai menjadi rentetan JSON menggunakan json.Marshal.
Output akan seperti yang dijangkakan:
{"votes":{"option_A":"3"},"count":1}
Teknik ini menyediakan cara yang fleksibel untuk mengendalikan data JSON dengan struktur yang tidak diketahui, membolehkan anda mengubah suai dan memperkaya data mengikut keperluan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Suai Objek JSON dengan Struktur Tidak Diketahui dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!