解開未知鍵的巢狀JSON 之謎
解組具有未知鍵的複雜JSON 資料可能是一項艱鉅的任務。考慮一下提供的令人困惑的 JSON 結構:
{ "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 }
結構很混亂,但我們可以逐步剖析它。最初,我們注意到存在未知的伺服器名稱,例如“Server1.example.com”和“Server2.example.com”,它們動態變化。此外,「host」欄位包含一個神秘的正規表示式,沒有封閉的金鑰。
為了解決這個挑戰,讓我們將注意力轉移到提供的結構上:
type ServerDetails struct { Message struct{ Hostname struct{ Details struct{ Application string `json:"application"` }`json:"-"` }`json:"-"` }`json:"message"` }
這個結構的設計處理「訊息」物件中的已知字段,但它無法捕獲不同的伺服器名稱和特殊的“主機”欄位。
一個關鍵的見解是利用更靈活的資料結構,即 map[string]ServerStruct。這允許我們將未知的伺服器名稱作為指向 ServerStruct 值的鍵。
修改後的結構將類似於:
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
透過添加適當的 JSON 標籤,我們可以現在成功地將 JSON 資料解析為這個增強的結構。
透過使用map[string]ServerStruct 適應JSON 資料的動態性質,擁抱帶有JSON 標籤的無鍵字段的可能性,我們可以有效地解開嵌套JSON 資料的複雜結構並提取所需的訊息。
以上是如何解析具有未知鍵和非常規欄位結構的巢狀 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!