Golang で JSON データを並べ替えおよびフィルターする: 並べ替え: sort.Slice 関数を使用して、指定されたフィールドに基づいて JSON データを並べ替えます。フィルタリング: for ループと条件ステートメントを使用して、指定された条件に基づいて JSON データをフィルタリングします。実際のケース: JSON ファイルからユーザー情報を読み取り、年齢で降順に並べ替え、25 歳以上のユーザーを除外します。
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 で JSON データを並べ替えてフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。