繁体   English   中英

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

[英]How to do deep sets and gets in Go's map[string]interface{}?

如果我有一些任意的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" }
            }
        }
    }]
}

我想使用类似下面的命令来获取位于数据data.0.links.author.linkage.id的字符串"9"

[]interface{}{"data",0,"links","author","linkage","id"}

我知道执行此操作的理想方法是创建嵌套结构,该结构映射到我为生产代码执行的JSON对象,但是有时我需要进行一些快速测试,这在Go语言中也很好。

您有提供类似方法的stretchr/objx

使用示例:

document, _ := objx.FromJSON(json)
document.Get("path.to.field[0].you.want").Str()

但是,除非您真的真的完全不知道JSON输入的结构,否则这不是进入golang的首选方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM