栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Go语言中,如何将json解组到对象数组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Go语言中,如何将json解组到对象数组?

此代码中有许多错误。首先,json是无效的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   }}

你的下一个问题(你问的那个)是

m :=data.(map[string]interface{})
m
一个
map[string]interface{}
。这意味着当您
v
在范围循环中对它进行索引时,类型为
interface{}
。您需要使用再次键入assert
v.(map[string]interface{})
,然后每次从地图上读取时都键入assert。


我还注意到,

mc.Pool[i] = monster
当我是int且mc.Pool是map [string]
Monster时,您下次尝试。整数不是该映射的有效键。


您的数据看起来非常僵化,所以我会让unmarshall为您完成大部分工作。您可以为它提供一个map [string] Monster,而不是为其提供map
[string] interface {}。

这是一个简单的例子。除了更改解组的工作方式之外,我还添加了一个错误返回。错误返回对于发现错误很有用。该错误返回告诉我您的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)}

我在goplay上发布了一个工作示例:http://play.golang.org/p/4EaasS2VLL



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383921.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号