Golang map如何生成有序的json數(shù)據(jù)詳解
前言
本文主要給大家介紹了關(guān)于Golang map生成有序json數(shù)據(jù)的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面來(lái)一起看看詳細(xì)的介紹:
先來(lái)看一段 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í)際上,對(duì)于 Golang 來(lái)說(shuō),previews 字段并非因此就變成是有序的,通過(guò)打印就可以知道了,但是瀏覽器會(huì)自動(dòng)對(duì)帶有 int 型主鍵的 json 數(shù)據(jù)進(jìn)行排序,從而實(shí)現(xiàn)了目的。
生成的 json 格式數(shù)據(jù)如下,按照 int 從小到大排列了:
{ "data": { "game_desc": "從秀才一路前進(jìn),你最終能官居幾品? 為了完成父親的遺愿,你走上了這條漫漫升官路。 最終你會(huì)成為什么樣的人? ", "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),本來(lái)可以輸出更為簡(jiǎn)潔的數(shù)據(jù)結(jié)構(gòu),但因?yàn)?map 的無(wú)序不得不加一個(gè)主鍵,讓前端解析增加了麻煩。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者使用Go語(yǔ)言能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Golang語(yǔ)言JSON解碼函數(shù)Unmarshal的使用
- golang中json的omitempty使用操作
- golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法
- 利用Golang解析json數(shù)據(jù)的方法示例
- Golang實(shí)現(xiàn)解析JSON的三種方法總結(jié)
- Golang中使用JSON的一些小技巧分享
- 解決Golang json序列化字符串時(shí)多了\的情況
- golang中json反序列化可能遇到的問(wèn)題
- 解決golang json解析出現(xiàn)值為空的問(wèn)題
- 深入淺出Go語(yǔ)言:手把手教你高效生成與解析JSON數(shù)據(jù)
相關(guān)文章
golang快速實(shí)現(xiàn)網(wǎng)頁(yè)截圖的方法
這篇文章主要介紹了golang快速實(shí)現(xiàn)網(wǎng)頁(yè)截圖的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Golang實(shí)現(xiàn)按行讀取文件的方法小結(jié)
按行讀取文件相較于一次性載入,有著很多優(yōu)勢(shì),如內(nèi)存效率高、處理速度快、實(shí)時(shí)性高等,本文主要介紹了Golang按行讀取文件的相關(guān)方法,希望對(duì)大家有所幫助2024-02-02Go語(yǔ)言入門教程之基礎(chǔ)語(yǔ)法快速入門
這篇文章主要介紹了Go語(yǔ)言入門教程之基礎(chǔ)語(yǔ)法快速入門,本文講解了值類型、變量、常量、循環(huán)、條件語(yǔ)句、條件枚舉等內(nèi)容,需要的朋友可以參考下2014-11-11如何解決goland,idea全局搜索快捷鍵失效問(wèn)題
這篇文章主要介紹了如何解決goland,idea全局搜索快捷鍵失效問(wèn)題,快捷鍵失效,可能是快捷鍵沖突,也或者是快捷鍵被修改成其他了。在settings下查看快捷鍵是否被修改,下文詳細(xì)介紹需要的朋友可以參考下2022-04-04Go項(xiàng)目配置管理神器之viper的介紹與使用詳解
viper是一個(gè)完整的?Go應(yīng)用程序的配置解決方案,它被設(shè)計(jì)為在應(yīng)用程序中工作,并能處理所有類型的配置需求和格式,下面這篇文章主要給大家介紹了關(guān)于Go項(xiàng)目配置管理神器之viper的介紹與使用,需要的朋友可以參考下2023-02-02