【Golang后端】如果成功跳出 返回JSON数组的操作坑? - Go语言中文社区

【Golang后端】如果成功跳出 返回JSON数组的操作坑?


废话不多说,排版不多管了,直接把问题拿出来!又卡我几个小时
我定义了结构体数组,将数据库中的用户数据拿出来存储进去,然后按照总分顺序排名成功!好了,我开始返回JSON形式了:
在这里插入图片描述
但不幸的事情是:前端需要的是数组形式!!!,并且如上方法直接返回的话,返回结果按照字典序排列,不能保持上述键值对的顺序!!!看下图!顺序是字典序排列!
在这里插入图片描述
在这里插入图片描述
那么——我们返回一两个参数还可以用gin.H{ }来解决,参数一多,再加上有序性,就得换一种方法来返回JSON数组了! 下面的代码是通常可以用到的:

//这种通常用gin.H
c.JSON(http.StatusOK, gin.H{
	"code": 200
	"msg":  succeed_login
})

我们要返回JSON有序数组,OK,那就直接给切片(大小刚合适),但是!我们因为前期需要排序呀,所以定义的数组方便运算,而数组大小又是开很大的呢,所以我们在返回JSON前转回切片!
用到的方法如下:

type Rank struct {
	//用到json记得一定大写首字母
	UserId                string `json:"userId"`
	Solved_problem_number string `json:"solved_problem_number"`
	Solved_problem_score  string `json:"solved_problem_score"`
}

s := make([]Rank, 0)
for i := 0; i < cnt; i++{
	s = append(s, rank[i])
}
fmt.Println(s)
c.JSON(http.StatusOK, gin.H{
	"rank": s,
})

于是,我们便得到了JSON字符串的返回形式!
在这里插入图片描述
在这里插入图片描述
交互结果如下:
在这里插入图片描述
总结

  • 为什么不用gin.H呢?因为虽然保持了键值对,但是!未能返回数组,顺序也是map的无序性!
  • 为什么不一开始就用切片呢?因为前期需要用到结构体数组排序操作
  • 为什么最后需要转切片呢?因为切片大小是合理的!可以适应大小返回数据给前端
  • 在结构体的声明中用到 json:“xxx” 的时候,前面的变量名一定**大写!!!**后面的json就是我们返回数组是前面对应的键!
  • 返回JSON数组和JSON对象是不一样的!
  • 既然是返回数组形式即{ [ { },{ },{ },{ } ], xxx },那么不能如第一幅图中那样一项一项返回数组中的项!不然就是大括号接大括号,没有逗号分离,这种连续的JSON返回前端并不容易处理
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_16763983/article/details/107190582
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-20 22:04:43
  • 阅读 ( 476 )
  • 分类:前端

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢