ホームページ > バックエンド開発 > Golang > Golang で JSON データを並べ替えてフィルタリングするにはどうすればよいですか?

Golang で JSON データを並べ替えてフィルタリングするにはどうすればよいですか?

WBOY
リリース: 2024-06-01 13:38:56
オリジナル
1238 人が閲覧しました

Golang で JSON データを並べ替えおよびフィルターする: 並べ替え: sort.Slice 関数を使用して、指定されたフィールドに基づいて JSON データを並べ替えます。フィルタリング: for ループと条件ステートメントを使用して、指定された条件に基づいて JSON データをフィルタリングします。実際のケース: JSON ファイルからユーザー情報を読み取り、年齢で降順に並べ替え、25 歳以上のユーザーを除外します。

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

Golang で JSON データを並べ替えてフィルタリングする方法

JSON (JavaScript Object Notation) は、Web アプリケーションやモバイル アプリケーションで広く使用されている軽量のテキストベースのデータ交換形式です。 Golang で JSON データを処理する場合、必要な情報を取得するためにデータを並べ替えたりフィルター処理したりする必要があることがよくあります。

Sort

sort パッケージを使用して 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

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}]
}
ログイン後にコピー

Filter

for ループと条件ステートメントを使用して JSON データをフィルターします:

[
  {
    "name": "John",
    "age": 25,
    "score": 85.5
  },
  {
    "name": "Mary",
    "age": 28,
    "score": 90.0
  },
  {
    "name": "Bob",
    "age": 23,
    "score": 87.2
  }
]
ログイン後にコピー

実際的なケース

シナリオを考えてみましょう。ユーザー情報を含む JSON ファイルがあり、ユーザーを年齢順に降順に並べ替えて、年齢が 25 歳を超えるユーザーのみを取得したいとします。

JSON ファイル:

🎜
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 コード: 🎜🎜rrreee

以上がGolang で JSON データを並べ替えてフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート