该符号
x.(T)称为类型断言。
对于
x接口类型和类型T的表达式,主表达式x.(T)断言x不是,nil并且其中存储的值x是类型T。
你的例子:
result["args"].(map[string]interface{})["foo"]这意味着
results与key关联的地图的值
"args"是类型
map[string]interface{}(另一个具有stringkey和任何值的地图)。并且您想要访问与key关联的该映射的元素
"foo"。
如果您知道输入的JSON格式,那么可以,您必须使用通用
map[string]interface{}类型来处理它。如果您知道输入JSON的确切结构,则可以创建一个astruct来匹配期望的字段,这样做可以将JSON文本解编为您的自定义
struct类型的值,例如:
type Point struct { Name string X, Y int}func main() { in := `{"Name":"center","X":2,"Y":3}` pt := Point{} json.Unmarshal([]byte(in), &pt) fmt.Printf("Result: %+v", pt)}输出:
Result: {Name:center X:2 Y:3}在Go Playground上尝试一下。
建模您的输入
您当前的JSON输入可以使用以下类型建模:
type Data struct { Args struct { Foo string }}并访问
Foo(在Go
Playground上尝试):
d := Data{}json.Unmarshal([]byte(in), &d)fmt.Println("Foo:", d.Args.Foo)

![在Golang中访问类型为map [string] interface {}的嵌套地图 在Golang中访问类型为map [string] interface {}的嵌套地图](http://www.mshxw.com/aiimages/31/448024.png)
