beego rest ful 请求参数为JSON怎么获取

log.Println(string(this.Ctx.Input.RequestBody))
结果
{
    "name": "yuxing"
}

这是官网的demo

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

有没有类似GetInt GetString 这样的方法 直接提取JSON里面的数据 (好像有点不太现实)

已邀请:

javasgl - https://javasgl.github.io/

赞同来自:

目前 json 需要先定义结构,再解析,再访问。

这里有一个库,我没有使用过。可以试试 https://gocn.io/article/184

Openset

赞同来自:

interface{}可以用来存储任意数据类型的对象,这种数据结构正好用于存储解析的未知结构的json数据的结果。JSON包中采用map[string]interface{}和[]interface{}结构来存储任意的JSON对象和数组。Go类型和JSON类型的对应关系如下:

bool 代表 JSON booleans, float64 代表 JSON numbers, string 代表 JSON strings, nil 代表 JSON null.

madmen - 80后IT男

赞同来自:

拿不到this.Ctx.Input.RequestBody的数据

string(this.Ctx.Input.RequestBody)
结果:结果
"{"name": "yuxing"}"
使用示例
 var ob models.Object
 json.Unmarshal(this.Ctx.Input.RequestBody, &ob)
 ob.name //为空

使用 github.com/json-iterator/go

jsoniter.Get(this.Ctx.Input.RequestBody, "name").ToString()  //为空

llliiinnn - 死肥宅

赞同来自:

beego.Config.CopyRequestBody = true 或者 app.conf copyrequestbody = true

xtceetg

赞同来自:

为什么我打印的和你们的不一样呢?

要回复问题请先登录注册