色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

go json對象數組排序

錢琪琛1年前8瀏覽0評論

在Go中,排序是一種非常常見的操作。當我們處理JSON對象數組時,有時候需要按照特定的屬性對數組進行排序。這時,我們可以使用Go內置的sort包來處理。

假設我們有如下JSON對象數組:

[
{"name": "Lucas", "age": 21},
{"name": "Lily", "age": 25},
{"name": "Tom", "age": 18},
{"name": "Kathy", "age": 23}
]

現在,我們要按照年齡從小到大的順序對這個數組進行排序。首先,我們需要定義一個結構體來表示上面的JSON對象:

type Person struct {
Name string `json:"name"`
Age  int    `json:"age"`
}

然后,我們可以使用json包的Unmarshal函數將JSON對象數組解碼成Person對象數組:

var persons []Person
err := json.Unmarshal(data, &persons)
if err != nil {
log.Fatal(err)
}

接著,我們可以使用sort.Slice函數來對Person對象數組進行排序。需要注意的是,在傳入Less函數時,我們需要先判斷傳入的參數是不是*Person類型,然后再進行比較。

sort.Slice(persons, func(i, j int) bool {
p1, p2 := persons[i], persons[j]
if p1.Age != p2.Age {
return p1.Age< p2.Age
}
return p1.Name< p2.Name
})

最后,我們可以使用json包的MarshalIndent函數將Person對象數組重新編碼成JSON對象數組:

data, err := json.MarshalIndent(persons, "", "    ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(data))

這樣,我們就成功地對JSON對象數組進行了排序。