问题描述

所以我试图解析一个JSON响应。它可以是多层次的。这就是我所做的:

$ $ p $ $ code var结果图字符串接口
json.Unmarshal(apiResponse,& amp; amp; ;结果)

首先,这是正确的方法吗?



假设回应如下:

  {
args:{
foo:bar
}
}
 foo 
  result [args]。(map [string] interface {} )[foo] 
。()
 x。(T)
 T  x  x。(T) x  nil  x  T 

您的示例:

  result [args]。(map [string] interface {} )[foo] 
的结果args string foo
 类型Point结构{
名称字符串
X,Y int
}

func main(){
in:=`{Name:center,X: 2,Y:3}`

pt:= Point {}
json.Unmarshal([] byte(in),& pt)

fmt.Printf(Result:%+ v,pt)
}
 结果:{姓名:中心X:2 Y:3} 



为输入建模



您可以使用此类型对当前的JSON输入进行建模:

 类型数据结构{
Args结构{
Foo字符串
}
}
 Foo 
{
  "args": {
            "foo": "bar"
          }
}
result["args"].(map[string]interface{})["foo"]
.()
x.(T)
xTx.(T)xnilxT

Your example:

result["args"].(map[string]interface{})["foo"]
results"args"map[string]interface{}string"foo"
map[string]interface{}structstruct
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)
}

Output:

Result: {Name:center X:2 Y:3}

Try it on the Go Playground.

Modeling your input

Your current JSON input could be modelled with this type:

type Data struct {
    Args struct {
        Foo string
    }
}
Foo
d := Data{}
json.Unmarshal([]byte(in), &d)
fmt.Println("Foo:", d.Args.Foo)

这篇关于在Golang中访问类型为map [string] interface {}的嵌套映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!