將JSON 解組為Go 中的物件陣列
將JSON 資料解析為自訂Go 結構對於許多程式設計任務至關重要。本題探討如何在 Go 中將 JSON 解析為物件陣列。
問題
問題中提供的JSON 資料表現出特定的格式,其中每個鍵代表一個唯一標識符,對應的值是一個包含多個屬性的嵌套物件。目標是將這些 JSON 資料解組到一個結構數組中,其中數組中的每個元素代表 JSON 中的巢狀物件之一。
問題中提供的程式碼片段嘗試將 JSON 解析為MonsterCollection 結構,其中包含 Monster 結構的字串對映。但是,由於類型不匹配,編譯器報告無效操作錯誤。
解決方案
程式碼片段的主要問題在於它將 JSON 解組為介面{} 類型,允許動態類型,但功能有限。要存取嵌套物件中的特定字段,需要將循環中的 v 變數類型斷言為正確的類型。
此外,程式碼嘗試將 Monster 物件插入具有整數鍵的映射中。但是,Pool 映射是字串到 Monster 結構的映射,因此鍵應該是字串。
以下程式碼示範如何正確地將JSON 解組為Monster 結構陣列:
type Monster struct { MonsterId int32 `json:"monster-id"` Level int32 `json:"level"` SkillLevel int32 `json:"skill-level"` AimerId int32 `json:"aimer-id"` } type MonsterCollection struct { Pool map[string]Monster } func (mc *MonsterCollection) FromJson(jsonStr string) error { var data map[string]Monster b := []byte(jsonStr) err := json.Unmarshal(b, &data) if err != nil { return err } mc.Pool = data return nil }
在此程式碼中:
現在,JSON資料可以被解組到 MonsterCollection 結構中並透過 Pool 映射進行訪問,這提供了一種使用唯一標識符檢索單個怪物的便捷方法。
以上是如何在 Go 中將 JSON 解組為物件數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!