为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 的 map[string]interface{} 中进行深度设置和获取?

如何在 Go 的 map[string]interface{} 中进行深度设置和获取?

Go
慕桂英3389331 2021-09-27 14:14:45
如果我有一些任意的 JSON,我如何使用地图键和/或切片索引进行深度集和获取嵌套属性?例如,在JSON API 示例的以下摘录中:{    "data": [{        "type": "posts",        "id": "1",        "title": "JSON API paints my bikeshed!",        "links": {            "self": "http://example.com/posts/1",            "author": {                "self": "http://example.com/posts/1/links/author",                "related": "http://example.com/posts/1/author",                "linkage": { "type": "people", "id": "9" }            }        }    }]}我想获得字符串"9"位于data.0.links.author.linkage.id使用类似:[]interface{}{"data",0,"links","author","linkage","id"}我知道这样做的理想方法是创建映射到我为生产代码所做的 JSON 对象的嵌套结构,但有时我需要做一些快速测试,这在 Go 中也很好。
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

你有stretchr/objx提供类似的方法。


使用示例:


document, _ := objx.FromJSON(json)

document.Get("path.to.field[0].you.want").Str()

然而,除非你真的提前完全不知道你的 JSON 输入的结构,否则这不是 golang 的首选方式......


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信