在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對象數組進行了排序。
上一篇vue實現新聞app
下一篇python 負數取商