在進(jìn)行開(kāi)發(fā)的時(shí)候,常常需要對(duì)json數(shù)據(jù)進(jìn)行排序,以便直觀的對(duì)json數(shù)據(jù)進(jìn)行分析,那么使用Go語(yǔ)言如何對(duì)json數(shù)據(jù)排序(直接對(duì)第一層進(jìn)行排序),直接上代碼
package main
import (
"encoding/json"
"fmt"
"sort"
)
func main() {
map2 := getMapFromJson()
fmt.Println(" map的長(zhǎng)度:", len(map2))
//1.定義一個(gè)slice
s1 := make([]string, 0, len(map2))
map3 := make(map[string]string)
//2.遍歷map獲取key-->s1中
for key := range map2 {
s1 = append(s1, key)
}
//3.給s1進(jìn)行排序
//sort.Ints(s1) //使用sort包下的方法直接排序,不用自己寫冒泡了。
sort.Strings(s1)
//4. 遍歷s1,map
for _, k := range s1 { // 先下標(biāo),再數(shù)值
map3[k] = map2[k]
}
b, berror := json.Marshal(map3)
if berror != nil {
fmt.Print("berror:", berror)
}
fmt.Println(string(b))
}
func getMapFromJson() map[string]string {
var jsonBody = []byte(`{"akehi":"絕地求生","snifeni":"王者農(nóng)藥","undinfi":"消消樂(lè)","yunin":"傳奇霸業(yè)","zhondfi":"連連看"}`)
var map4 = make(map[string]string)
err := json.Unmarshal(jsonBody, &map4)
if err != nil {
println("unJsonerr:", err)
} else {
for k, v := range map4 {
print("map4 k and Value :", k, v)
}
}
return map4
}