处理从请求到Json的响应

时间:2015-06-19 22:33:00

标签: go

我正在使用以下代码在发布请求后从服务器获取响应:

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变量?

1 个答案:

答案 0 :(得分:0)

json是每个实例上具有字符串n_expedienteenviar的对象的数组。在Go中你需要一个类型的数组;

re := []ResponseFromPost{} 
err := json.Unmarshal([]byte(`[{"n_expediente":"9","enviar":"2"}]`), &re)
fmt.Println(re[0].Enviar);

以下是展示您的模型需要https://play.golang.org/p/d64Sict4AG

的示例

您可能希望基于此对代码进行其他一些更改。就像在unmarshal之后由切片长度(for i := range re { print i })绑定的循环,以及该类型的不同名称。