首頁 >後端開發 >Golang >如何在 Go 中將 JSON 物件解組為結構數組?

如何在 Go 中將 JSON 物件解組為結構數組?

Barbara Streisand
Barbara Streisand原創
2024-11-29 13:26:19261瀏覽

How to Unmarshal a JSON Object into an Array of Structs in Go?

如何將 JSON 解組為 Go 中的物件數組

問題

如何將以下 JSON 解組為 Go 中的物件數組語言?

{
    "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 需要一些修改才有效,例如在頂層物件中的鍵值對之間加上逗號:

{
   "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解組為物件數組,可以使用以下程式碼:

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 =&mc.Pool
    b := []byte(jsonStr)
    return json.Unmarshal(b, data)
}

中此程式碼:

  • Monster 結構代表物件的結構。
  • MonsterCollection 結構包含一個怪物池,每個怪物都由一個字串作為鍵控。
  • The FromJson 方法將 JSON 字串解組到 Pool 映射。

錯誤回傳很有用用於偵錯目的,讓您可以偵測錯誤,例如無效的 JSON 語法。

可以在 Golang Playground 上找到工作範例:http://play.golang.org/p/4EaasS2VLL。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn