golang beego接受post json字符串解析返回JSON数据

在 API 的开发中,我们经常会用到 JSON 或 XML 来作为数据交互的格式,如何在 beego 中获取 Request Body 里的 JSON 或 XML 的数据呢?

  1. 在配置文件里设置 copyrequestbody = true
  2. 在 Controller 中
  3. json 用来解析JSON的包
  4. ob定义的struct

  1. func (this *ObjectController) Post() {  
  2.     var ob models.Object  
  3.     json.Unmarshal(this.Ctx.Input.RequestBody, &ob)  
  4.     objectid := models.AddOne(ob)  
  5.     this.Data["json"] = "{"ObjectId":"" + objectid + ""}"  
  6.     this.ServeJSON()  
  7. }  

源码解析:github.comastaxieeegocontextinput.go 346-357行

从下面的源码可以看出:数据是从body里面读出来的,也可以是JSON也可以是html

  1. func (input *BeegoInput) CopyBody(MaxMemory int64) []byte {  
  2.     if input.Context.Request.Body == nil {  
  3.         return []byte{}  
  4.     }  
  5.     safe := &io.LimitedReader{R: input.Context.Request.Body, N: MaxMemory}  
  6.     requestbody, _ := ioutil.ReadAll(safe)  
  7.     input.Context.Request.Body.Close()  
  8.     bf := bytes.NewBuffer(requestbody)  
  9.     input.Context.Request.Body = ioutil.NopCloser(bf)  
  10.     input.RequestBody = requestbody  
  11.     return requestbody  
  12. }  

原文地址:https://www.cnblogs.com/hzcya1995/p/13313594.html