Golang map如何生成有序的json数据详解
前言
本文主要给大家介绍了关于Golangmap生成有序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 testImages:=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("testlist:",list)
但实际上,对于Golang来说,previews字段并非因此就变成是有序的,通过打印就可以知道了,但是浏览器会自动对带有int型主键的json数据进行排序,从而实现了目的。
生成的json格式数据如下,按照int从小到大排列了:
{ "data":{ "game_desc":"从秀才一路前进,你最终能官居几品?为了完成父亲的遗愿,你走上了这条漫漫升官路。最终你会成为什么样的人?", "game_logo":"http://image.egret.com/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语言能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。