使用動態鍵解組嵌套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 }
解決方案:
要有效地解組此類JSON,請考慮對具有動態鍵的嵌套物件使用map [string]ServerStruct 。這種方法允許包含多個具有未知名稱的伺服器。
這是更新的結構範例:
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
透過新增 JSON 標籤,您可以指示解碼器對應特定的 JSON fields 到對應的結構體欄位。以下是更新的標籤:
type YourStruct struct { Success `json:"success"` ResponseMS `json:"response_ms"` Servers `json:"-"` } type ServerStruct struct { Application string `json:"application"` Owner string `json:"owner"` [...] }
「Servers」欄位上的 json:"-" 標籤可確保解碼器跳過將 JSON 欄位直接對應到「ServerStruct」欄位。相反,它將字段映射到 map[string]ServerStruct。
這種方法提供了一種靈活的解決方案,用於使用動態鍵解組嵌套 JSON 對象,使您可以輕鬆存取每個伺服器對像中的資料。
以上是如何使用 Go 使用動態鍵解組巢狀 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!