首页 > 后端开发 > Golang > 如何在 Go 中将 JSON 对象解组为结构数组?

如何在 Go 中将 JSON 对象解组为结构数组?

Barbara Streisand
发布: 2024-11-29 13:26:19
原创
318 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板