亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Golang map如何生成有序的json數(shù)據(jù)詳解

 更新時間:2017年07月28日 08:24:01   作者:小談  
最近在學習Golang,發(fā)現(xiàn)了一個問題,覺著有必要給大家總結下,下面這篇文章主要給大家介紹了關于Golang map如何生成有序json數(shù)據(jù)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面來一起看看吧。

前言

本文主要給大家介紹了關于Golang map生成有序json數(shù)據(jù)的相關內容,分享出來供大家參考學習,下面來一起看看詳細的介紹:

先來看一段 Golang 生成 json 的代碼,首先定義了一個 map[string]interface{}  的變量,然后存一些值,這里要注意的是 previews 字段,為了瀏覽器獲取到的 json 數(shù)據(jù)是有序的,所以定義了一個 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("test list:", list)

但實際上,對于 Golang 來說,previews 字段并非因此就變成是有序的,通過打印就可以知道了,但是瀏覽器會自動對帶有 int 型主鍵的 json 數(shù)據(jù)進行排序,從而實現(xiàn)了目的。

生成的 json 格式數(shù)據(jù)如下,按照 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
}

這樣的話有個缺點,本來可以輸出更為簡潔的數(shù)據(jù)結構,但因為 map 的無序不得不加一個主鍵,讓前端解析增加了麻煩。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者使用Go語言能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:

相關文章

  • Go并發(fā)與鎖的兩種方式該如何提效詳解

    Go并發(fā)與鎖的兩種方式該如何提效詳解

    如果沒有鎖,在我們的項目中,可能會存在多個goroutine同時操作一個資源(臨界區(qū)),這種情況會發(fā)生競態(tài)問題(數(shù)據(jù)競態(tài)),下面這篇文章主要給大家介紹了關于Go并發(fā)與鎖的兩種方式該如何提效的相關資料,需要的朋友可以參考下
    2022-12-12
  • Golang token的生成和解析詳解

    Golang token的生成和解析詳解

    這篇文章主要給大家介紹了Golang token的生成和解析,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • 詳解Go語言如何解析帶注釋的json

    詳解Go語言如何解析帶注釋的json

    標準的json格式是不帶注釋,但是有時候為了方便理解json中各字段的含義,需要支持帶注釋的json,這篇文章主要介紹了Go語言解析帶注釋json的相關方法,希望對大家有所幫助
    2024-03-03
  • Golang如何交叉編譯各個平臺的二進制文件詳解

    Golang如何交叉編譯各個平臺的二進制文件詳解

    這篇文章主要給大家介紹了關于Golang如何交叉編譯各個平臺的二進制文件的相關資料,并介紹了golang如何讓編譯生產(chǎn)的二進制文件變小,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • Go?tablewriter庫提升命令行輸出專業(yè)度實例詳解

    Go?tablewriter庫提升命令行輸出專業(yè)度實例詳解

    命令行工具大家都用過,如果是運維人員可能會編寫命令行工具來完成各種任務,命令行輸出的美觀和易讀性往往容易被忽視,很爛的輸出會讓人感覺不專業(yè),本文將介紹Go語言中牛逼的實戰(zhàn)工具tablewriter庫,使你在命令行輸出中展現(xiàn)出專業(yè)的一面
    2023-11-11
  • Gin的中間件執(zhí)行流程與用法詳解

    Gin的中間件執(zhí)行流程與用法詳解

    我們在使用Gin框架進行Web開發(fā)的時候,基本上都會遇到登錄攔截的場景,在Gin當中,?中間件和業(yè)務處理函數(shù)都是一樣的類型,都是一種函數(shù),本文給大家介紹了Gin的中間件執(zhí)行流程與用法,需要的朋友可以參考下
    2024-04-04
  • go local history本地歷史恢復代碼神器

    go local history本地歷史恢復代碼神器

    這篇文章主要為大家介紹了go local history本地歷史恢復代碼神器的使用功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Golang?Mutex互斥鎖源碼分析

    Golang?Mutex互斥鎖源碼分析

    本篇文章,我們將一起來探究下Golang?Mutex底層是如何實現(xiàn)的,知其然,更要知其所以然。文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-10-10
  • Go語言學習之函數(shù)的定義與使用詳解

    Go語言學習之函數(shù)的定義與使用詳解

    這篇文章主要為大家詳細介紹Go語言中函數(shù)的定義與使用,文中的示例代碼講解詳細,對我們學習Go語言有一定幫助,需要的可以參考一下
    2022-04-04
  • 深入了解Go語言中的作用域和變量重聲明

    深入了解Go語言中的作用域和變量重聲明

    在?Go?語言中,代碼塊的嵌套和作用域是程序設計的關鍵概念之一,本文將探討如何在?Go?語言中利用代碼塊的嵌套和作用域來組織代碼,并介紹變量重聲明的規(guī)則,感興趣的可以了解下
    2023-11-11

最新評論