Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahmarshall Nested JSON dengan Kekunci Tidak Diketahui dan Nama Pelayan Dinamik?
Menyahmarshalling Nested JSON dengan Unknown Keys
Cabarannya terletak pada menghuraikan struktur JSON dengan nombor kunci luar yang tidak diketahui dan bersarang berstruktur yang mengelirukan kunci. Pertimbangkan format JSON berikut:
{ "message": { "Server1.example.com": [], "Server2.example.com": [] }, "response_ms": 659, "success": true }
Komplikasi Definisi Struktur
Kerumitan berpunca daripada ketiadaan kunci yang jelas di luar nama pelayan dan sifat dinamik kunci luar. Percubaan awal menggunakan struct bersarang dalam:
type ServerDetails struct { Message struct { Hostname struct { Details struct { Application string `json:"application"` } `json:"-"` } `json:"-"` } `json:"message"` }
gagal disebabkan nama pelayan yang tidak diketahui dan kunci bersarang tunggal tanpa kunci luar.
Penyelesaian Kunci Dinamik
Untuk mengatasi cabaran ini, seseorang boleh menggunakan peta[rentetan]ServerStruct dalam peringkat teratas struct. ServerStruct mengandungi aplikasi, pemilik dan maklumat lain yang berkaitan khusus untuk setiap pelayan. Teg JSON boleh ditambah secara strategik untuk memastikan penghuraian yang betul.
Definisi Struktur yang Disemak
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
Teg JSON dan Unmarshalling
Tag JSON tambahan ialah perlu:
{ "message": { "Server1.example.com": [ { "application": "Apache", "host": { "name": "/^Server-[13456]/" }, "owner": "User1", "project": "Web", "subowner": "User2" } ],
Medan "mesej" kini menyahmarshal ke dalam peta[rentetan][]ServerStruct. Setiap kunci dalam peta mewakili nama pelayan, dan nilai yang sepadan ialah tatasusunan ServerStruct. Medan "hos" diabaikan semasa unmarshalling menggunakan teg "-".
Dengan pengubahsuaian ini, data JSON boleh berjaya dihuraikan ke dalam struct yang disemak semula.
Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshall Nested JSON dengan Kekunci Tidak Diketahui dan Nama Pelayan Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!