首頁 > 後端開發 > Golang > 如何在 Go 中將巢狀 JSON 解組到物件數組中?

如何在 Go 中將巢狀 JSON 解組到物件數組中?

Barbara Streisand
發布: 2024-11-25 10:59:14
原創
366 人瀏覽過

How to Unmarshal Nested JSON into an Array of Objects in Go?

在Go 中將巢狀JSON 解組到物件陣列

問題

考慮以下🎜>

{
   "1001":{
      "level":10,
      "monster-id":1001,
      "skill-level":1,
      "aimer-id":301
   },
   "1002":{
      "level":12,
      "monster-id":1002,
      "skill-level":1,
      "aimer-id":302
   },
   "1003":{
      "level":16,
      "monster-id":1003,
      "skill-level":2,
      "aimer-id":303
   }
}
登入後複製
目標是將這個JSON 解組到Monster陣列中

type Monster struct {
    MonsterId  int32
    Level      int32
    SkillLevel int32
    AimerId    int32
}
登入後複製
解決方案

要實現此目的,請按照下列步驟操作:

  1. 定義MonsterCollection: 建立一個🎜> 建立一個🎜>定義MonsterCollection: 建立一個🎜> 建立一個MonsterCollection 類型來保存帶有字串的Monster 物件的地圖鍵。
type MonsterCollection struct {
    Pool map[string]Monster
}
登入後複製
  1. 實作 FromJson 方法: 在 MonsterCollection 類型上定義 FromJson 方法來處理解群組。
func (mc *MonsterCollection) FromJson(jsonStr string) error {
    var data *map[string]Monster
    b := []byte(jsonStr)
    return json.Unmarshal(b, &data)
}
登入後複製
    使用 var data *map[string] 怪物避免使用interface{},確保產生的映射具有所需的類型。
  • 將資料作為指標傳遞可確保解組過程中所做的變更反映在 MonsterCollection 的 Pool 欄位中。
  1. 池中正確的鍵類型:將池映射的鍵類型更改為字串以匹配JSON 中的鍵data.
  2. 使用結構體標籤: 將JSON 結構體標籤加入Monster 結構體中,以指定JSON資料中的欄位名稱。
type Monster struct {
    MonsterId  int32 `json:"monster-id"`
    Level      int32 `json:"level"`
    SkillLevel int32 `json:"skill-level"`
    AimerId    int32 `json:"aimer-id"`
}
登入後複製
  1. 呼叫 FromJson: 使用 JSON 字串呼叫 FromJson 方法將資料解組到MonsterCollection。
mc := new(MonsterCollection)
err := mc.FromJson(jsonStr)
登入後複製
  1. 檢查錯誤:處理 FromJson 傳回的任何錯誤以進行偵錯。
  2. 存取物件: 使用MonsterCollection 的Pool 欄位來存取單一Monster
for id, monster := range mc.Pool {
    fmt.Println(id, monster)
}
登入後複製
按照以下步驟,您可以成功地將巢狀的JSON 資料解組到Go 中的Monster 物件數組中。

以上是如何在 Go 中將巢狀 JSON 解組到物件數組中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板