解析到结构体

主要是把JSON数据解析到结构体,再去处理结构体数据,就会变得简单,例如有以下的JSON请求数据

Req:{
    "data":{
                "PlayingNumber" : "number" ,
                "WaitingNumber" : "number" ,
                "PlayingUsers" : [{
                    "OpenId" : "string"
                } ...],
                "WaitingUsers" : [{
                    "OpenId" : "string"
                } ...]
    }
}

在后台解析时,就要利用以下的结构体来解析数据:

type OnlinePlayer struct {
    OpenId string
}
type Obj struct {
    PlayingNumber int64
    WaitingNumber int64
    PlayingUsers  []OnlinePlayer
    WaitingUsers  []OnlinePlayer
}
json.Unmarshal(this.Ctx.Input.RequestBody, &ob)
func (this *StatusAPIController) OnlineCount() {
    var ob Obj
    json.Unmarshal(this.Ctx.Input.RequestBody, &ob)
    PlayingUsersNumber := ob.PlayingNumber
    WaitingUsersNumber := ob.WaitingNumber
    players_id := ob.PlayingUsers
    for _, v := range players_id {
        var player_temp *models.User
        player_temp, _ = models.UserGetByOpenId(v.OpenId)
        PlayingUsers = append(PlayingUsers, player_temp)
    }
    waits_id := ob.WaitingUsers
    for _, v := range waits_id {
        var wait_temp *models.User
        wait_temp, _ = models.UserGetByOpenId(v.OpenId)
        WaitingUsers = append(WaitingUsers, wait_temp)
    }
    beego.Debug(PlayingUsersNumber, WaitingUsersNumber)
}