


Bagaimana untuk Unmarshal Nested JSON dengan Elemen Struktur Serupa dalam Go?
Merungkai JSON dengan Nesting dan Kesamaan Struktur
Apabila berurusan dengan struktur JSON yang kompleks, adalah perkara biasa untuk menghadapi senario di mana satu elemen struktur adalah daripada jenis yang sama dengan struct itu sendiri. Ini boleh menimbulkan cabaran semasa proses unmarshalling.
Dalam kes khusus ini, kami diberikan rentetan JSON yang mewakili tatasusunan konfigurasi pangkalan data. Setiap konfigurasi pangkalan data mengandungi pelbagai atribut, termasuk senarai replika. Setiap replika juga merupakan objek JSON dengan atribut yang serupa dengan konfigurasi pangkalan data.
Untuk menyahmarshal rentetan JSON ini, kami memerlukan struktur data yang boleh menampung persamaan bersarang dan struktur.
Memodelkan Struktur Bersarang dengan Jenis Dinamik
Memandangkan input JSON ialah bukan sekeping struct DBS, kami memerlukan jenis data yang lebih fleksibel untuk menangkap strukturnya. Antara muka[rentetan]peta{} ialah pilihan yang sangat baik kerana ia boleh mewakili pasangan nilai kunci dengan nilai dinamik.
Contoh:
type DBS struct { URL string Port string Uname string Pass string Authdb string Replicas []DBS } func main() { raw, err := ioutil.ReadFile("./config.json") if err != nil { fmt.Println(err.Error()) os.Exit(1) } var config []map[string]interface{} json.Unmarshal(raw, &config) for _, db := range config { d, ok := db["db"] if !ok { // Handle the case where "db" is missing } db := d.(map[string]interface{}) url := db["url"].(string) port := db["port"].(string) var replicas []DBS for _, replica := range db["replicas"] { replicas = append(replicas, mapToDBS(replica)) } // ... Other operations } }
Menggunakan Jenis Dinamik untuk Menghuraikan JSON
Dalam contoh ini, Pembolehubah konfigurasi ialah sekeping peta, yang membolehkannya menyimpan konfigurasi pangkalan data sebagai pasangan nilai kunci.
Untuk setiap konfigurasi pangkalan data, kami mendapatkan "db" sub-objek dan hantar ke peta[rentetan]antara muka{}. Ini membolehkan kami mengakses atribut individu seperti "url" dan "port".
Atribut "replika" dikendalikan dengan cara yang sama . Setiap replika ialah objek JSON, jadi ia boleh ditukar menjadi struct DBS menggunakan fungsi mapToDBS().
Dengan memanfaatkan fleksibiliti jenis dinamik, kami boleh membongkar rentetan JSON dengan berkesan dan menghuraikan struktur bersarangnya.
Atas ialah kandungan terperinci Bagaimana untuk Unmarshal Nested JSON dengan Elemen Struktur Serupa dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Di GO, fungsi INIT digunakan untuk permulaan pakej. 1) Fungsi init secara automatik dipanggil apabila permulaan pakej, dan sesuai untuk memulakan pembolehubah global, menetapkan sambungan dan memuatkan fail konfigurasi. 2) Terdapat pelbagai fungsi init yang boleh dilaksanakan dalam urutan fail. 3) Apabila menggunakannya, perintah pelaksanaan, kesukaran ujian dan kesan prestasi harus dipertimbangkan. 4) Adalah disyorkan untuk mengurangkan kesan sampingan, menggunakan suntikan ketergantungan dan penangguhan permulaan untuk mengoptimumkan penggunaan fungsi INIT.

Go'sSelectStatementStreamLinesConcurrentProgrammingByMultiPlexingOperations.1) itAllowSwaitingonMultiPlechannoPerations,

ContextandWaitGroupSarecrucialingingoformanagingGoroutinesfectively.1) ContextAllowsSignalingCancellationandDeadlinesacrosapiboundaries, memastikangoroutinescanbestplygracely.2) WaitgroupSsynchronizegoroutine, Mempersembahkan CreationAllcebeBefefeSproprophering, Preveation

Goisbeneficialformicroservicesduetoitssimplicity, kecekapan, androbustconcurrencysupport.1) go'sdesignemphasizessimplicityandeficiency, idealformicroservices.2) itsconcurrencymodelusinggoroutin

Golangisidealforbuildingscalablesystemsduetoitseficiencyandcurrency, whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.golang'sdesignencouragescouragescouragescouragescourageSlean, readablecodeanditsouragescouragescourscean,

Golang lebih baik daripada C dalam kesesuaian, manakala C lebih baik daripada Golang dalam kelajuan mentah. 1) Golang mencapai kesesuaian yang cekap melalui goroutine dan saluran, yang sesuai untuk mengendalikan sejumlah besar tugas serentak. 2) C Melalui pengoptimuman pengkompil dan perpustakaan standard, ia menyediakan prestasi tinggi yang dekat dengan perkakasan, sesuai untuk aplikasi yang memerlukan pengoptimuman yang melampau.

Sebab -sebab memilih Golang termasuk: 1) prestasi konkurensi tinggi, 2) sistem jenis statik, 3) mekanisme pengumpulan sampah, 4) perpustakaan dan ekosistem standard yang kaya, yang menjadikannya pilihan yang ideal untuk membangunkan perisian yang cekap dan boleh dipercayai.

Golang sesuai untuk pembangunan pesat dan senario serentak, dan C sesuai untuk senario di mana prestasi ekstrem dan kawalan peringkat rendah diperlukan. 1) Golang meningkatkan prestasi melalui pengumpulan sampah dan mekanisme konvensional, dan sesuai untuk pembangunan perkhidmatan web yang tinggi. 2) C mencapai prestasi muktamad melalui pengurusan memori manual dan pengoptimuman pengkompil, dan sesuai untuk pembangunan sistem tertanam.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna
