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