首頁 > 後端開發 > Golang > 如何在 Golang 中對 JSON 資料進行排序和過濾?

如何在 Golang 中對 JSON 資料進行排序和過濾?

WBOY
發布: 2024-06-01 13:38:56
原創
1280 人瀏覽過

在 Golang 中對 JSON 資料進行排序和篩選:排序:使用 sort.Slice 函數根據指定欄位對 JSON 資料進行排序。過濾:使用 for 迴圈和條件語句,根據指定的條件過濾 JSON 資料。實戰案例:從 JSON 檔案中讀取使用者訊息,按年齡降序排序並過濾出年齡大於 25 的使用者。

如何在 Golang 中对 JSON 数据进行排序和过滤?

如何在Golang 中對JSON 資料進行排序和過濾

JSON(JavaScript 物件符號)是一種輕量級、基於文字的資料交換格式,它被廣泛用於網路和行動應用程式。在 Golang 中處理 JSON 資料時,經常需要對資料進行排序和過濾以獲取我們想要的資訊。

排序

使用sort 套件對JSON 資料進行排序:

package main

import (
    "encoding/json"
    "fmt"
    "sort"
)

type Person struct {
    Name  string
    Age   int
    Score float64
}

func main() {
    data := []Person{
        {"John", 25, 85.5},
        {"Mary", 28, 90.0},
        {"Bob", 23, 87.2},
    }

    // 根据 Age 字段升序排序
    sort.Slice(data, func(i, j int) bool {
        return data[i].Age < data[j].Age
    })
    fmt.Println(data) // 输出:[{Bob 23 87.2} {John 25 85.5} {Mary 28 90}]

    // 根据 Score 字段降序排序
    sort.Slice(data, func(i, j int) bool {
        return data[i].Score > data[j].Score
    })
    fmt.Println(data) // 输出:[{Mary 28 90} {Bob 23 87.2} {John 25 85.5}]
}
登入後複製

過濾

#使用for 循環和條件語句對JSON 資料進行過濾:

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name  string
    Age   int
    Score float64
}

func main() {
    data := []Person{
        {"John", 25, 85.5},
        {"Mary", 28, 90.0},
        {"Bob", 23, 87.2},
    }

    // 过滤出年龄大于 25 的人员
    filteredData := []Person{}
    for _, person := range data {
        if person.Age > 25 {
            filteredData = append(filteredData, person)
        }
    }
    fmt.Println(filteredData) // 输出:[{Mary 28 90}]
}
登入後複製

實戰案例

讓我們考慮這樣一個場景:您有一個JSON 檔案包含使用者訊息,您希望按年齡降序對使用者進行排序並僅獲取年齡大於25 的使用者。

JSON 檔案:

[
  {
    "name": "John",
    "age": 25,
    "score": 85.5
  },
  {
    "name": "Mary",
    "age": 28,
    "score": 90.0
  },
  {
    "name": "Bob",
    "age": 23,
    "score": 87.2
  }
]
登入後複製

Golang 程式碼:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "os"
    "sort"
)

type Person struct {
    Name  string
    Age   int
    Score float64
}

func main() {
    // 从文件读取 JSON 数据
    jsonFile, err := os.Open("users.json")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer jsonFile.Close()

    byteValue, err := ioutil.ReadAll(jsonFile)
    if err != nil {
        fmt.Println(err)
        return
    }

    // 解码 JSON 数据
    var data []Person
    err = json.Unmarshal(byteValue, &data)
    if err != nil {
        fmt.Println(err)
        return
    }

    // 对数据进行排序和过滤
    sort.Slice(data, func(i, j int) bool {
        return data[i].Age > data[j].Age
    })

    filteredData := []Person{}
    for _, person := range data {
        if person.Age > 25 {
            filteredData = append(filteredData, person)
        }
    }

    // 打印结果
    fmt.Println(filteredData) // 输出:[{Mary 28 90}]
}
登入後複製

以上是如何在 Golang 中對 JSON 資料進行排序和過濾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板