GOLANG>如何将Ajax json数据绑定到自定义结构类型?

时间:2018-11-16 07:07:30

标签: json go struct binding bind

为什么不为我的自定义结构类型绑定ajax json数据?

我的环境:

  • golang
  • echo框架

去绑定功能

/**
 *  function : Model Init
 */
func modelInit(c echo.Context) tetrisModel.Tetris {
    tetris := tetrisModel.DefaultInit()
    if err := c.Bind(tetris); err != nil {
        c.Logger().Error(err)
    }

    return *tetris
}

调用modelInit

func Control(c echo.Context) tetrisModel.Tetris {
    tetris := modelInit(c)
    fmt.Println("=======================")
    fmt.Println(c.FormValue("nowBlockPositionX"))
    fmt.Println(tetris.NowBlockPositionX) // do not printing, why?
    fmt.Println("=======================")

    // ... ... other code... ... 
}

结果:

fmt.Println(c.FormValue("nowBlockPositionX"))>工作

fmt.Println(tetris.NowBlockPositionX)无法正常工作/无法打印,为什么? (不绑定)

我希望此代码将打印出“ 3”

DefaultInit()

func DefaultInit() *Tetris {
    tetris := new(Tetris)

    // some default data setting...

    return tetris
}



俄罗斯方块模型代码

type Tetris struct {
    NowBlockPositionX  int                `form:"nowBlockPositionX" json:"nowBlockPositionX"`
    NowBlockPositionY  int                `form:"nowBlockPositionY" json:"nowBlockPositionY"`
    NowBlock           map[string]int     `form:"nowBlock" json:"nowBlock"`

    // other data exists...
}



ajax json数据(POST类型)

{
    nowBlockPositionX: 3
    , nowBlockPositionY: 0
    , nowBlock: {L: 0}
    // other data exists...
}

我知道go结构类型是否具有文字字符串(如form:"nowBlock" json:"nowBlock"),然后结构自动bind('Bind function')。是吗?

0 个答案:

没有答案