正确使用map [string] interface {}?

Pet*_*ter 3 google-app-engine go

我有两个相关的问题,我不想为这两个问题打开一个新的主题:

给出以下代码:

1    type Request struct {
2       Values map[string]interface{}
3    }
4
5    func (r Request) Send() {
6       client := &http.Client{}
7       resp, _ := http.Post("http://example.com", "text/json", &r.Values)
8    }
Run Code Online (Sandbox Code Playgroud)

我们的想法是能够未知量的一个块发送key => value,key => key => value等我们的API端点.

问题1:

我该如何分配Request.Values?我们可能需要使用的示例用例如下(请原谅PHP代码,我们正在转换):

'name' => [ $first, $last ],
'address' => [ 'city' => 'city', 'state' => 'state' ],
'country' => 'US'
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我们有key => value,key => [ values ]key => [ key => value ]

我该怎么做并分配完全相同的值Request.Values

问题2:

显然Values是类型map[string]interface{},如何将其转换为类型,io.Reader以便我可以将值发送到服务器?

在这两个问题上都非常感谢任何指导.

nem*_*emo 6

问题1

您可以将值分配给Request.Values任何其他值.

示例(正在播放):

x := map[string]interface{}{
    "foo": []string{"a","b"},
    "bar": "foo",
    "baz": 10.4,
}
Run Code Online (Sandbox Code Playgroud)

问题2

您需要一种中间格式,例如JSON.

使用此包,您可以将Request结构编组为JSON字符串,传输所述字符串并在另一个(PHP?)端解析它.