Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menghuraikan Data JSON Bersarang dengan Kekunci Tidak Diketahui dan Struktur Medan Tidak Konvensional?
Merungkai Enigma JSON Bersarang dengan Kekunci Tidak Diketahui
Menghapuskan data JSON yang kompleks dengan kunci yang tidak diketahui boleh menjadi tugas yang sukar. Pertimbangkan struktur JSON yang membingungkan yang disediakan:
{ "message": { "Server1.example.com": [ { "application": "Apache", "host": { "name": "/^Server-[13456]/" }, "owner": "User1", "project": "Web", "subowner": "User2" } ], "Server2.example.com": [ { "application": "Mysql", "host": { "name": "/^Server[23456]/" }, "owner": "User2", "project": "DB", "subowner": "User3" } ] }, "response_ms": 659, "success": true }
Strukturnya mengelirukan, tetapi kita boleh membedahnya langkah demi langkah. Pada mulanya, kami perhatikan kehadiran nama pelayan yang tidak diketahui, seperti "Server1.example.com" dan "Server2.example.com," yang berbeza-beza secara dinamik. Selain itu, medan "hos" mengandungi ungkapan regex samar tanpa kunci yang disertakan.
Untuk merungkai cabaran ini, mari kita alihkan fokus kita kepada struct yang disediakan:
type ServerDetails struct { Message struct{ Hostname struct{ Details struct{ Application string `json:"application"` }`json:"-"` }`json:"-"` }`json:"message"` }
Struktur ini direka bentuk untuk mengendalikan medan yang diketahui dalam objek "mesej", tetapi ia gagal menangkap nama pelayan yang berbeza-beza dan "hos" yang pelik medan.
Pandangan utama ialah menggunakan struktur data yang lebih fleksibel, iaitu peta[rentetan]ServerStruct. Ini membolehkan kami mengambil kira nama pelayan yang tidak diketahui sebagai kunci yang menghala ke nilai ServerStruct.
Struktur yang disemak akan menyerupai:
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
Dengan penambahan tag JSON yang sesuai, kita boleh kini berjaya menghuraikan data JSON ke dalam struct dipertingkat ini.
Dengan menyesuaikan diri dengan sifat dinamik data JSON menggunakan peta[rentetan]ServerStruct dan menerima kemungkinan medan yang tidak dikunci dengan teg JSON, kami boleh merungkai struktur data JSON bersarang yang membingungkan dengan berkesan dan mengekstrak maklumat yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Data JSON Bersarang dengan Kekunci Tidak Diketahui dan Struktur Medan Tidak Konvensional?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!