我就废话不多说了,大家还是直接看代码吧~
代码如下
type kdrespbody struct { errcode int `json:"errcode"` desc string `json:"description"` data []services.kdsearchback `json:"data"` } var reqinfo kdrespbody err := c.bindjson(&reqinfo) if err != nil { log.info(err) c.json(200, gin.h{"errcode": 400, "description": "post data err"}) return } else { fmt.println(reqinfo.data) }
补充:使用gin接受post的json数据
第一种
func login(c *gin.context) { json := make(map[string]interface{}) //注意该结构接受的内容 c.bindjson(&json) log.printf("%v",&json) c.json(http.statusok, gin.h{ "name": json["name"], "password": json["password"], }) }
第二种
type user struct { name string `json:"name"` password int64 `json:"password"` } func login(c *gin.context) { json := user{} c.bindjson(&json) log.printf("%v",&json) c.json(http.statusok, gin.h{ "name": json.name, "password": json.password, }) }
补充:golang json数据解析错误情况
byte数组接收网络数据完网络数据后,需要根据接收到的长度进行重新分片,才能被json进行解析,不然会报错。
for { len1, err := resp.body.read(data) if len1 > 0 { data1 := data[:len1] //需要根据接收到的长度进行重新分片 err1 := json.unmarshal(data1, rec_rep) if err1 != nil { fmt.println("json.unmarshal failed") } } if err != nil { break } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。