我正在使用以下代码在发布请求后从服务器获取响应:
type ResponseFromPost struct {
N_expediente string
Enviar string
}
func main(){
......
res, err := client.Do(req)
if err != nil {
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
var re ResponseFromPost
err = json.Unmarshal(body, &re)
fmt.Println(re.Enviar);
}
有了这个我得到:
error: &{%!e(string=array) %!e(*reflect.rtype=&{32 2509985895 0 8 8 25 0x608170
[0x7703c0 <nil>] 0x730b80 0x69acb0 0x6116c0 0x7732c0})}
服务器发送的值为:
[{"n_expediente":"9","enviar":"2"}]
如何使用json变量?
最佳答案
json是在每个实例上具有字符串n_expediente
和enviar
的那些对象的数组。在Go中,您需要一个类型的数组;
re := []ResponseFromPost{}
err := json.Unmarshal([]byte(`[{"n_expediente":"9","enviar":"2"}]`), &re)
fmt.Println(re[0].Enviar);
这是一个示例,说明您的模型需要是https://play.golang.org/p/d64Sict4AG
您可能希望基于此对代码进行其他更改。就像一个循环,该循环受解组之后的 slice 长度(
for i := range re { print i }
)和类型的不同名称限制。