我使用jquery发送ajax json数据用于golang Web静态服务。并想使用golang在我的后端解析json数据。这是简单的javascript代码:
$.ajax({
url: "http://localhost:8080/persons",
type: "POST",
dataType: "json",
data: {
"data": '{"firstName": "Hello","lastName": "World"}'
},
success:function (res) {
console.log(res)
},
error: function (err){
console.log(err)
}
})
然后使用GetRawData()获取gin.Context信息,并使用json解码器解析json内容,
data, _ := c.GetRawData()
jsonStream := string(data)
dec := json.NewDecoder(strings.NewReader(jsonStream))
t, err := dec.Token()
if err != nil {
log.Fatal(err)
}
for dec.More() {
var p Person
err := dec.Decode(&p)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Hello %s\n", p.firstName)
}
完成!
答案 0 :(得分:-1)
我对Gin不太熟悉,但是要接受application/json
数据,请使用gin.Context.BindJSON
绑定请求中的值。
router.POST("/persons", func(c *gin.Context) {
var jsonData Member
if c.BindJSON(&jsonData) == nil {
fmt.Println(jsonData.first_name + " " + jsonData.last_name)
} else {
// handle error
}
}
根据彼得关于导出字段的建议进行更新:
type Person struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
}