繁体   English   中英

如何在Go BeeGo框架中传递JSON响应?

[英]How to pass JSON response in Go BeeGo framework?

我正在使用go和beego构建微服务应用程序。 我正在尝试将JSON响应从服务A传递到服务B,如下所示:

func (u *ServiceController) GetAll() {
    req := httplib.Get("http://localhost/api/1/services")
    str, err := req.String()
    // str = {"id":1, "name":"some service"}
    if err != nil {
        fmt.Println(err)
    }
    u.Data["json"] = str
    u.ServeJSON()
}

但是,当我发送响应时,我实际上将json编码加倍:

"{\"id\":\"1\",\"name\":\"some service\"}"

最后,这是我想出的解决方案:

func (u *ServiceController) GetAll() {
    req := httplib.Get("http://localhost/api/1/services")
    str, err := req.String()
    if err != nil {
        fmt.Println(err)
    }

    strToByte := []byte(str)
    u.Ctx.Output.Header("Content-Type", "application/json")
    u.Ctx.Output.Body(strToByte)
}

尝试这个:

func (u *ServiceController) GetAll() {
    req := httplib.Get("http://localhost/api/1/services")
    str, err := req.Bytes()
    // str = {"id":1, "name":"some service"}
    if err != nil {
        fmt.Println(err)
    }
    u.Ctx.Output.Header("Content-Type", "text/plain;charset=UTF-8")
    u.Ctx.ResponseWriter.Write(str)
}

如果调用req.String() ,它将在json字符串中对"进行编码。我建议您通常使用[]byte处理数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM