Golang map如何生成有序的json數(shù)據(jù)詳解
前言
本文主要給大家介紹了關(guān)于Golang map生成有序json數(shù)據(jù)的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面來一起看看詳細(xì)的介紹:
先來看一段 Golang 生成 json 的代碼,首先定義了一個(gè) map[string]interface{}
的變量,然后存一些值,這里要注意的是 previews 字段,為了瀏覽器獲取到的 json 數(shù)據(jù)是有序的,所以定義了一個(gè) map[int]map[string]string
的類型,加上了一個(gè)表示順序的鍵:
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("test list:", list)
但實(shí)際上,對于 Golang 來說,previews 字段并非因此就變成是有序的,通過打印就可以知道了,但是瀏覽器會自動(dòng)對帶有 int 型主鍵的 json 數(shù)據(jù)進(jìn)行排序,從而實(shí)現(xiàn)了目的。
生成的 json 格式數(shù)據(jù)如下,按照 int 從小到大排列了:
{ "data": { "game_desc": "從秀才一路前進(jìn),你最終能官居幾品? 為了完成父親的遺愿,你走上了這條漫漫升官路。 最終你會成為什么樣的人? ", "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 }
這樣的話有個(gè)缺點(diǎn),本來可以輸出更為簡潔的數(shù)據(jù)結(jié)構(gòu),但因?yàn)?map 的無序不得不加一個(gè)主鍵,讓前端解析增加了麻煩。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者使用Go語言能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Golang如何交叉編譯各個(gè)平臺的二進(jìn)制文件詳解
這篇文章主要給大家介紹了關(guān)于Golang如何交叉編譯各個(gè)平臺的二進(jìn)制文件的相關(guān)資料,并介紹了golang如何讓編譯生產(chǎn)的二進(jìn)制文件變小,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08Go?tablewriter庫提升命令行輸出專業(yè)度實(shí)例詳解
命令行工具大家都用過,如果是運(yùn)維人員可能會編寫命令行工具來完成各種任務(wù),命令行輸出的美觀和易讀性往往容易被忽視,很爛的輸出會讓人感覺不專業(yè),本文將介紹Go語言中牛逼的實(shí)戰(zhàn)工具tablewriter庫,使你在命令行輸出中展現(xiàn)出專業(yè)的一面2023-11-11go local history本地歷史恢復(fù)代碼神器
這篇文章主要為大家介紹了go local history本地歷史恢復(fù)代碼神器的使用功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Go語言學(xué)習(xí)之函數(shù)的定義與使用詳解
這篇文章主要為大家詳細(xì)介紹Go語言中函數(shù)的定義與使用,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Go語言有一定幫助,需要的可以參考一下2022-04-04