首页 > 解决方案 > 如何将 ajax json 数据绑定到自定义结构类型?

问题描述

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

我的环境:

去绑定函数

/**
 *  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
}

调用模型初始化

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”

默认初始化()

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 struct 类型有文字字符串(像这样 : form:"nowBlock" json:"nowBlock")然后结构自动绑定('绑定函数')。不是吗?

标签: jsonajaxgostructbind

解决方案


推荐阅读