欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

先來看一段 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ù)結(jié)構(gòu),但因為 map 的無序不得不加一個主鍵,讓前端解析增加了麻煩。

總結(jié)

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

相關(guān)文章

  • golang快速實現(xiàn)網(wǎng)頁截圖的方法

    golang快速實現(xiàn)網(wǎng)頁截圖的方法

    這篇文章主要介紹了golang快速實現(xiàn)網(wǎng)頁截圖的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • go項目打包部署的完整步驟

    go項目打包部署的完整步驟

    之前斷斷續(xù)續(xù)的接觸到項目部署,一直沒有詳細(xì)的了解部署,于是最近就好好的專研一下項目的部署,下面這篇文章主要給大家介紹了關(guān)于go項目打包部署的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Golang實現(xiàn)按行讀取文件的方法小結(jié)

    Golang實現(xiàn)按行讀取文件的方法小結(jié)

    按行讀取文件相較于一次性載入,有著很多優(yōu)勢,如內(nèi)存效率高、處理速度快、實時性高等,本文主要介紹了Golang按行讀取文件的相關(guān)方法,希望對大家有所幫助
    2024-02-02
  • Go語言入門教程之基礎(chǔ)語法快速入門

    Go語言入門教程之基礎(chǔ)語法快速入門

    這篇文章主要介紹了Go語言入門教程之基礎(chǔ)語法快速入門,本文講解了值類型、變量、常量、循環(huán)、條件語句、條件枚舉等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • 詳解Golang中日志庫glog的使用

    詳解Golang中日志庫glog的使用

    golang/glog?是?C++?版本?google/glog?的?Go?版本實現(xiàn),基本實現(xiàn)了原生?glog?的日志格式,下面大家就跟隨小編一起了解一下glog的具體使用吧
    2023-09-09
  • 淺析Go語言中的超時控制

    淺析Go語言中的超時控制

    日常開發(fā)中我們大概率會遇到超時控制的場景,而一個良好的超時控制可以有效的避免一些問題,所以本文就來和大家深入探討一下Go語言中的超時控制吧
    2023-10-10
  • Go語言異常處理案例解析

    Go語言異常處理案例解析

    這篇文章主要介紹了Go語言異常處理案例解析,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 詳解Go 1.22 for循環(huán)的兩處重要更新

    詳解Go 1.22 for循環(huán)的兩處重要更新

    這篇文章主要詳細(xì)介紹了Go 1.22 for循環(huán)的兩處重要更新,Go 1.22 版本于 2024 年 2 月 6 日發(fā)布,引入了幾個重要的特性和改進,在語言層面上,這個版本對 for 循環(huán)進行了兩處更新,本文將會對 for 循環(huán)的兩個更新進行介紹,需要的朋友可以參考下
    2024-02-02
  • 如何解決goland,idea全局搜索快捷鍵失效問題

    如何解決goland,idea全局搜索快捷鍵失效問題

    這篇文章主要介紹了如何解決goland,idea全局搜索快捷鍵失效問題,快捷鍵失效,可能是快捷鍵沖突,也或者是快捷鍵被修改成其他了。在settings下查看快捷鍵是否被修改,下文詳細(xì)介紹需要的朋友可以參考下
    2022-04-04
  • Go項目配置管理神器之viper的介紹與使用詳解

    Go項目配置管理神器之viper的介紹與使用詳解

    viper是一個完整的?Go應(yīng)用程序的配置解決方案,它被設(shè)計為在應(yīng)用程序中工作,并能處理所有類型的配置需求和格式,下面這篇文章主要給大家介紹了關(guān)于Go項目配置管理神器之viper的介紹與使用,需要的朋友可以參考下
    2023-02-02

最新評論