如何在golang自定义结构类型中绑定json字符串化数据?

时间:2018-11-16 09:02:11

标签: json go echo bind stringify

如何在golang自定义结构类型中绑定json字符串化数据?

js ajax

$.ajax({
    type: "POST"
    , url : url
    , data : JSON.stringify('{"nowBlockPositionX":3,"nowBlockPositionY":0,"nowBlock":{"O":0}}')
})

转到自定义结构

type demo struct {
    nowBlockPositionX  int                `form:"nowBlockPositionX" json:"nowBlockPositionX"`
    NowBlockPositionY  int                `form:"nowBlockPositionY" json:"nowBlockPositionY"`
    NowBlock           map[string]int     `form:"nowBlock" json:"nowBlock" query:"nowBlock"`
}


不要绑定这个

demo := new(demo)
if err := c.Bind(demo); err != nil {
    c.Logger().Error(err)
}

1 个答案:

答案 0 :(得分:1)

首先,修复demo结构。结构中的字段需要导出。只需将每个字段的第一个字符更改为大写即可。

然后删除form:query:标签。您只需要json:标记。

type demo struct {
    NowBlockPositionX  int                `json:"NowBlockPositionX"`
    NowBlockPositionY  int                `json:"NowBlockPositionY"`
    NowBlock           map[string]int     `json:"NowBlock"`
}

在您的JavaScript代码上,$.ajax语句中也几乎没有出现问题。

执行以下两项操作:

  1. 将内容类型标头设置为application/json
  2. 因为您的数据已经在字符串中,所以删除JSON.stringify()

工作代码:

$.ajax({
    url : url,
    type: "POST",
    dataType: "json",
    contentType: "application/json",
    data: '{"nowBlockPositionX":3,"nowBlockPositionY":0,"nowBlock":{"O":0}}'
 })