3

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

给定以下代码:

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    }

这个想法是能够向我们的 API 端点发送一个未知数量的块key => valuekey => key => value等等。

问题一:

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

'name' => [ $first, $last ],
'address' => [ 'city' => 'city', 'state' => 'state' ],
'country' => 'US'

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

我怎样才能接受它并将完全相同的值分配给Request.Values

问题2:

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

非常感谢您对这两个问题的任何指导。

4

1 回答 1

6

问题 1

您可以Request.Values像使用任何其他值一样分配值。

示例(播放中):

x := map[string]interface{}{
    "foo": []string{"a","b"},
    "bar": "foo",
    "baz": 10.4,
}

问题2

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

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

于 2013-09-11T02:03:47.933 回答