Golangmap如何⽣成有序的json数据详解
前⾔
本⽂主要给⼤家介绍了关于Golang map⽣成有序json数据的相关内容,分享出来供⼤家参考学习,下⾯来⼀起看看详细的介绍:
婴幼儿吃什么钙好
先来看⼀段 Golang ⽣成 json 的代码,⾸先定义了⼀个map[string]interface{}的变量,然后存⼀些值,这⾥要注意的是 previews 字段,为了浏览器获取到的 json 数据是有序的,所以定义了⼀个map[int]map[string]string的类型,加上了⼀个表⽰顺序的键:
list := make(map[string]interface{})
list["id"] = detail["id"]
list["game_name"] = detail["game_name"]
list["game_logo"] = detail["game_m_logo"]
小儿痒疹gameTags, _ := utils.InterfaceToStr(detail["game_tags"])
list["game_tags"] = strings.Split(gameTags, ",")
list["game_desc"] = detail["game_long_desc"]
list["play_total_times"] = 33333
月相变化ppttestImages := make(map[int]map[string]string)
testImages[1] = map[string]string{"video": "xxx"}
testImages[2] = map[string]string{"image": "yyy1"}
testImages[3] = map[string]string{"image": "yyy2"}
testImages[5] = map[string]string{"image": "yyy5"}
testImages[4] = map[string]string{"image": "yyy3"}
list["previews"] = testImages
fmt.Println("test list:", list)
怎样自制橡皮
但实际上,对于 Golang 来说,previews 字段并⾮因此就变成是有序的,通过打印就可以知道了,但是浏览器会⾃动对带有int 型主键的 json 数据进⾏排序,从⽽实现了⽬的。
⽣成的 json 格式数据如下,按照 int 从⼩到⼤排列了:
{
"data": {
"game_desc": "从秀才⼀路前进,你最终能官居⼏品?为了完成⽗亲的遗愿,你⾛上了这条漫漫升官路。最终你会成为什么样的⼈? ",
"game_logo": "/game/gameIcon/181/90681/icon_200.jpg?1472698847",
"game_name": "官居⼏品",
"game_tags": [
"呵呵"自由落体运动习题
],
"id": "3",
"play_total_times": 33333,
"previews": {
"1": {
"video": "xxx"
},
"2": {
"image": "yyy1"
美食干炸小丸子食谱视频
},
"3": {
"image": "yyy2"
},
"4": {
"image": "yyy3"
},
"5": {
"image": "yyy5"
}
}
},
"msg": "ok",
"result": 0
}
这样的话有个缺点,本来可以输出更为简洁的数据结构,但因为 map 的⽆序不得不加⼀个主键,让前端解析增加了⿇烦。
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者使⽤Go语⾔能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。