猿问

如何在 Go 的 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" }

            }

        }

    }]

}

我想获得字符串"9"位于data.0.links.author.linkage.id使用类似:


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

我知道这样做的理想方法是创建映射到我为生产代码所做的 JSON 对象的嵌套结构,但有时我需要做一些快速测试,这在 Go 中也很好。


慕桂英3389331
浏览 260回答 1
1回答

回首忆惘然

你有stretchr/objx提供类似的方法。使用示例:document, _ := objx.FromJSON(json)document.Get("path.to.field[0].you.want").Str()然而,除非你真的提前完全不知道你的 JSON 输入的结构,否则这不是 golang 的首选方式......
随时随地看视频慕课网APP

相关分类

Go
我要回答